SQL-Statement mit "SELECT sum() & WHERE"?
Ich versuche eine doppelte sum()-Abfrage in einer Datenbank zu machen, bei welcher ich wie im bild zu sehen 2 verschiedene sum()-Abfragen machen möchte. Einmal nur sum() wo der Status = 0 ist... und einmal wo der Status = 1 ist... jeweils "AS" als Alias definiert... komme nicht weiter... bitte um Hilfe.
Zeile 3 u. 4 machen hier Probleme...
3 Antworten
WHERE sales.status = 0
elimiert doch schon alle bei denen status = 1 ist, oder?
Was soll denn Zeile 3 dann noch finden?
Ich kenne dieses Syntax mit WHERE in sum auch noch nicht. Ich kenne es mit CASE.
Eventuell geht sowas in der Ort?
SELECT
*,
max(timestamp),
sum(CASE WHEN sales.status = 0 THEN sales.amount ELSE 0 END),
sum(CASE WHEN sales.status = 1 THEN sales.amount ELSE 0 END)
FROM sales
INNER JOIN [...]
INNER JOIN [...]
INNER JOIN [...]
GROUP BY [...]
HAVING [...]
ORDER BY [...];
Check! Dieser Hinweis war die Lösung zum bewollten Ergenbis. Danke dafür.
hört sich verdächtig funktionstüchtig an ;) ...teste ich gleich und werde dann berichten. Danke schonmal
Du sagst nehme
sales.status = 0
sales.status = 1
und am Ende
WHERE sales.status = 0
Das passt nicht zusammen
Ich sehe gerade du packst einfach ein Where in dein Sum(), das klappt nicht.
select distinct
(select sum(RecordUpdateCounter) from OBJ_DeliveryOrder where shipper = 'acer') as test1,
(select sum(RecordUpdateCounter) from OBJ_DeliveryOrder where shipper = 'lenovo') as test2
from obj_deliveryorder where RecordCreationDtm > '2019-01-01'
Group by RecordUpdateCounter
Das hier wäre ein Beispiel mit Sub-Select.
Auch in meiner Antwort nicht beachten, das war nicht das Problem an sich - würde dir halt wahrscheinlich keinen Wert zurückgeben (für das = 1), aber das untere steht trotzdem
Ich denke Du kannst kein WHERE in der Aggregatsfunktion verweden.
am Ende
WHERE sales.status = 0
bitte nicht beachten, dass ist ein Fehler... dies wollte ich vor dem Fragen hier noch löschen...