Ich versuche, eine Abfrage wie dieseeine Summe auf Zeilen mit Bedingung
select sum(t1.quantity) - sum(t2.quantity * SELECT CASE WHEN (condition on t3.status) THEN 1 ELSE 0 END)),0)
from table1 t1
inner join table2 t2 on t1.key = t2.key
inner join table3 t3 on t2.key = t3.key
Grundsätzlich zu schaffen, was es eine Subtraktion zwischen dem ersten tun ist, einige t2.quantity einige, und eine zweite, die in Reihen sind, dass habe eine Bedingung für die Spalte t3.status (zum Beispiel t3.status> 2).
Aber ich bin immer
Kann nicht eine Aggregatfunktion auf einem Ausdruck führen eine Aggregat oder eine Unterabfrage enthält.
Gibt es eine Möglichkeit, dies ohne zusätzliche Join oder andere Abfrage hinzufügen?
meinst du, wenn conditon wahr ist, dann t2.quantity * 1, sonst t2.quantity * 0? – Grace
ja so wird es die Menge der Menge sein, wo die Bedingung verifiziert wird – AnotherGeek
Die von Ihnen gepostete select-Anweisung ist nicht gültig. Es sieht so aus, als gäbe es da noch ein paar Extras, vielleicht ein ISNULL? Sie scheinen auch eine Unterabfrage zu haben, aber die Syntax ist auch dort nicht gültig. Ich denke, dass du das für das Posting so vereinfacht hast, dass du viele Details ausgelassen hast. –