Sumowanie sum w zapytaniu z CASE

0

Cześć,
Mam taki fragment zapytania, które ma reprezentować obrót (Sprzedaż - zakup) na poszczególnych kontrahentach

	CASE WHEN dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (65536, 65537, 65538, 196608, 327680, 327681) THEN 
		SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak * (-1) END) 
		ELSE SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) END as WartNetto,


Niestety w wyniku otrzymuję zdublowane rekordy. Chodzi o to, że jeśli dany kontrahent miał zakup i sprzedaż, to w jednym rekordzie dostaję zakup ze znakiem -, a w drugim sprzedaż. A chciałbym, żeby to się sumowało. Próbowałem zamknąć całość w SUM(), ale niestety otrzymałem błąd:

Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

Podpowie ktoś jak to ugryźć?

0
Buster napisał(a):

Chodzi o to, że jeśli dany kontrahent miał zakup i sprzedaż, to w jednym rekordzie dostaję zakup ze znakiem -, a w drugim sprzedaż. A chciałbym, żeby to się sumowało.

Jeśli masz dwa wiersze wyniku, to tego tajemnica jest poza podanym fragmentem, tkwi w grupowaniu, głównej tabeli seleca czy czymś podobnym, ale nie w elementarnym wyrażeniu. MY tego nie wiemy

BTW biznesowo suma sprzedaży i zakupu to dosc słabe, to (jeśli ma być użyteczne) zawsze dwie liczby, interpretujacy sobie coś z tym w głowie zrobi (prawdę mówiąc nawet miałby wątpliwosc czy sprzedaż dodawać do (minus) korekty sprzedaż, ale to co proponujesz to ewidentnie dziwne)

0
--TWOJ SELECT
with t as
(
select 1 id, 1 kwota
union select 2 , 2
union select 3 , 3
)
		select sum(
		case when t.id in (1) 
			then sum(case when 1=1 then 0 else kwota*(-1) end)
			else sum(case when 1=1 then 0 else kwota*(1) end)
		end
)
from t
--POPRAWNY SELECT V1
with t as
(
select 1 id, 1 kwota
union select 2 , 2
union select 3 , 3
)
		select sum(
		case when t.id in (1) 
			then (case when 1=1 then 0 else kwota*(-1) end)
			else (case when 1=1 then 0 else kwota*(1) end)
		end
)
from t

1 użytkowników online, w tym zalogowanych: 0, gości: 1