2 Stimmen

Wie führe ich eine "Gruppierung nach" für ein Datum durch, wenn ich nur nach dem Datum gruppieren möchte?

Das ist ein wirklich ungeschickter Titel :)

Ich muss einen Bericht schreiben, der eine Liste der Rückgänge nach Datum erstellt. Das Datum wird als Datetime-Feld gespeichert und gibt die Anzahl der Rückgänge nach Datetime zurück.

Hier ist mein SQL:

select ps.date_scheduled, count(*) from payments_schedule ps
left join invoices i on i.invoice_id=ps.invoice_id
left join orders o on o.order_id=i.order_id
where ps.date_scheduled>'2009-06-01 00:00:00'
group by ps.date_scheduled

2009-06-25 14:13:04 1 2009-06-25 14:13:07 1 ...usw...

Nicht gut. Was ich will, ist das hier: 2009-06-25 25 2009-06-26 31 usw...

Wie kann ich das tun? Danke :)

7voto

Quassnoi Punkte 396418
SELECT  CAST(ps.date_scheduled AS DATE), COUNT(*)
FROM    payments_schedule ps
LEFT JOIN
        invoices i
ON      i.invoice_id = ps.invoice_id
LEFT JOIN
        orders o
ON      o.order_id = i.order_id
WHERE   ps.date_scheduled > '2009-06-01 00:00:00'
GROUP BY
        CAST(ps.date_scheduled AS DATE)

4voto

Alex Barrett Punkte 15496
GROUP BY DATE(ps.date_scheduled)

0voto

Adamski Punkte 52945

Ändern Sie Ihre Abfrage in select DATEADD(day, 0, DATEDIFF(day, 0, ps.date_scheduled)) . Dadurch wird nur der Datumsanteil der Datumszeit beibehalten. Sie müssen auch nach demselben Ausdruck gruppieren.

EDITAR : So lösen Sie das Problem für SQL Server.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X