sql >> Databáze >  >> RDS >> Sqlserver

SQL seskupit po dnech, zobrazit objednávky pro každý den

SQL „nepřeskakuje“ data... protože dotazy běží proti datům to je vlastně v tabulce. Takže pokud nemáte v tabulce DATE pro 14. ledna, tak proč by vám SQL ukazoval výsledek :)

Co musíte udělat, je vytvořit dočasnou tabulku a PŘIPOJIT SE k ní.

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)

Tady to je!



  1. Jak propojit databázi Accessu s SQL Serverem v Accessu 2016

  2. dynamický dotaz v proceduře Oracle pomocí kurzoru

  3. Úplné šifrování MariaDB v klidu a během přepravy pro maximální ochranu dat – část první

  4. Zapisovat začátek relace na 1 stránce nebo na všech stránkách?