24. maj 2013 - 09:01Der er
7 kommentarer og 1 løsning
SQL String - Multiple Sum på første resultat
Hej,
Jeg her lidt problemer med en ellers overskuelig SQL streng.
SELECT SalesDoc, Sum(RevenueCleaned) AS CreditNotes FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' AND RevenueCleaned < 0 GROUP BY SalesDoc
Jeg er interesseret i at finde alle SalesDoc var RevenueCLeaned er mindre end 0 og de tilhøre CCOA_Acc '32050102'. Det gør ovenstående streng perfekt.
Nu er jeg interesseret i også at finde al positiv omsætning (det vil sige RevenueCleaned > 0) på de SalesDoc som er opfyldt af den ovenstående string.
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
Slettet bruger
24. maj 2013 - 10:33#1
Måske sådan:
SELECT SalesDoc ,Sum(cse when RevenueCleaned < 0 then RevenueCleaned else 0 end) AS Negativ_total ,Sum(cse when RevenueCleaned > 0 then RevenueCleaned else 0 end) AS Positiv_total FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' GROUP BY SalesDoc
Synes godt om
Slettet bruger
24. maj 2013 - 10:34#2
en lille tryk-fejl:
SELECT SalesDoc ,Sum(case when RevenueCleaned < 0 then RevenueCleaned else 0 end) AS Negativ_total ,Sum(case when RevenueCleaned > 0 then RevenueCleaned else 0 end) AS Positiv_total FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' GROUP BY SalesDoc
Du vil have data for de salesdoc hvor der både er positive og negative RevenueCleaned værdier. Du er ikke interesseret i data fra de salesdoc's hvor der kun er positive eller nul RevenueCleaned værdier og heller ikke interesseret i data fra de salesdoc's hvor der kun er negative eller nul værdier.
Ikke testet, men det lyder som en WHERE clausul i retning af denne:
WHERE salesdoc IN (SELECT salesdoc FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE RevenueCleaned < 0) AND salesdoc IN(SELECT salesdoc FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE RevenueCleaned > 0
Dataerne selv ville jeg nok (stadig ikke testet) trække ud med subqueries, såsom:
SELECT a.SalesDoc, (SELECT SUM(RevenueCleaned) FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' AND RevenueCleaned < 0) AS Negativ_total, (SELECT SUM(RevenueCleaned) FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' AND RevenueCleaned > 0) AS Positiv_total FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] AS a WHERE salesdoc IN (SELECT salesdoc FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE RevenueCleaned < 0) AND salesdoc IN(SELECT salesdoc FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE RevenueCleaned > 0
Sludder og vrøvl. Her er en, forhåbenligt, forbedret version:
SELECT a.SalesDoc, (SELECT SUM(RevenueCleaned) FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' AND RevenueCleaned < 0 AND SalesDoc = a.SalesDoc) AS Negativ_total, (SELECT SUM(RevenueCleaned) FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE CCOA_Acc = '32050102' AND RevenueCleaned > 0 AND SalesDoc = a.SalesDoc) AS Positiv_total FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] AS a WHERE salesdoc IN (SELECT salesdoc FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE RevenueCleaned < 0) AND salesdoc IN(SELECT salesdoc FROM [BASS].[dbo].[tblXSAP_Revenue_Optimized] WHERE RevenueCleaned > 0
Christian_Belgien: tak for et super godt svar. Jeg er faktisk også interesseret i dem der kun er negative, så jeg har ændret lidt på dit svar. Mit fint input hjalp mig helt klart i mål - så ligger du lige et svar?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.