SQL-Statement mit "SELECT sum() & WHERE"?

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 [...];
Woher ich das weiß:Studium / Ausbildung

Mawiwa  16.01.2020, 16:29

schließe ich mich an

1
XentriX5526 
Fragesteller
 16.01.2020, 17:03

hört sich verdächtig funktionstüchtig an ;) ...teste ich gleich und werde dann berichten. Danke schonmal

0
XentriX5526 
Fragesteller
 16.01.2020, 19:10

Check! Dieser Hinweis war die Lösung zum bewollten Ergenbis. Danke dafür.

1

Du sagst nehme

sales.status = 0
sales.status = 1

und am Ende

WHERE sales.status = 0

Das passt nicht zusammen


Dudenox2  16.01.2020, 16:24

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.

1
XentriX5526 
Fragesteller
 16.01.2020, 17:02

am Ende

WHERE sales.status = 0

bitte nicht beachten, dass ist ein Fehler... dies wollte ich vor dem Fragen hier noch löschen...

0
Dudenox2  16.01.2020, 17:11
@XentriX5526

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

1

Ich denke Du kannst kein WHERE in der Aggregatsfunktion verweden.