sql >> Database >  >> RDS >> Sqlserver

SQL-groep per dag, bestellingen voor elke dag weergeven

SQL slaat geen datums over... omdat query's worden uitgevoerd op gegevens dat staat inderdaad in de tabel. Dus, als je geen DATE in de tabel hebt voor 14 januari, waarom zou SQL je dan een resultaat laten zien :)

Wat je moet doen, is een tijdelijke tabel maken, en daar JOIN aan toevoegen.

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)

Daar ga je!



  1. Hoe een kolom in SQL Server te verwijderen met T-SQL

  2. IsNumeriek in SQL Server JOIN

  3. Hoe nieuwe en laatst ingevoegde invoer met dezelfde ID optellen en resultaat in nieuwe invoer invoegen?

  4. cURL en PHP tonen 1