SQL Query voor omzet totaal en gisteren

Status
Niet open voor verdere reacties.

lam201

Gebruiker
Lid geworden
23 aug 2007
Berichten
516
Hi,

Ik heb de volgdende (versimpelde) tabel:
ShopID - Datum - Omzet.

Kan iemand mij helpen met een query die het volgende resultaat geeft:
ShopID - Omzet_Totaal - Omzet_Gisteren

Ik kan misschien wel iets voor elkaar krijgen met een hoop CASE WHEN constructies, maar ik heb het gevoel dat dit makkelijker moet kunnen.
Kan iemand mij helpen hierbij?

(Ik maak gebruik van Microsoft SQL Server Management Studio)
 
Zo uit het blote vuistje zou ik zeggen, iets als (syntax te controleren/testen):
;
Code:
With qry1 (ShopID, OmzetGisteren) as (select ShopID, Omzet from MyTable where [Datum] = getdate() -1)

select M.ShopID, sum(M.Omzet) , Q.OmzetGisteren
from MyTable M inner join qry1 Q on M.ShopID = Q.ShopID
group by M.ShopID, Q.OmzetGisteren

Als je naast het totaal ook alle individuele recs en het algemene totaal wil zien moet je OVER (PARTITION by) gebruiken.
 
Laatst bewerkt door een moderator:
Code:
SELECT a.shopid, b.omzet AS gisteren, a.totaal
FROM
(SELECT shopid, SUM(omzet) AS totaal FROM shop GROUP BY shopid) a
LEFT JOIN
(SELECT shopid, omzet
FROM SHOP
WHERE datum = CONVERT(DATE,GETDATE()-1)) b
ON a.shopid=b.shopid
 
Laatst bewerkt door een moderator:
vergelijk wel even de query plans van beide queries voor je kiest. Queries met subqueries zijn meestal niet de meest optimale.
 
Ach, valt wel mee. Met 65536 records resultaat binnen 00:00:00, oftewel in minder tijd dan om met je ogen te knipperen.
 
altijd good practice en een goede gewoonte om het correct te doen, en even naar de query plans kijken kost niet echt veel moeite. Met een knipoog dat misschien iets langer duurt ;-)
 
  • Leuk
Waarderingen: Aar
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan