sql >> Database teknologi >  >> RDS >> Sqlserver

SQL grupper efter dag, vis ordrer for hver dag

SQL "springer" ikke over datoer... fordi forespørgsler kører mod data det er faktisk i tabellen. Så hvis du ikke har en DATO i tabellen for den 14. januar, hvorfor skulle SQL så vise dig et resultat :)

Det, du skal gøre, er at lave en midlertidig tabel, og JOIN til den.

CREATE TABLE #MyDates ( TargetDate DATETIME )
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 0, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 1, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 2, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 3, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 4, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 5, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 6, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 7, 101))

SELECT CONVERT(VARCHAR, TargetDate, 101) AS Date, COUNT(*) AS OrderCount
FROM dbo.Orders INNER JOIN #MyDates ON Orders.Date = #MyDates.TargetDate
GROUP BY blah blah blah (you know the rest)

Så er det!



  1. Undslipper en skråstreg i et SQL-navn? Det kan undslippes, men SQL mener, at det er flere kolonner

  2. Hvad gør anførselstegn omkring tabelnavnet helt præcist?

  3. bruge try/undtagen med psycopg2 eller med closing?

  4. Applikation, der kører i Kubernetes cron-job, forbinder ikke til databasen i samme Kubernetes-klynge