Seite 1 von 1

MySql: group by with rollup problem

Verfasst: 23.06.2009, 02:56
von nerd
Hallo,

wie kann ich bei einem 'GROUP BY ... WITH ROLLUP' den wert in der 'group by' spalte aendern? hier meine abfrage:

Code: Alles auswählen

SELECT
DATE_FORMAT(auftrag.auftragseingang,'%b %y') AS Monat,
Count(auftrag.auftrag_id) as Bestellungen,
Sum(warenkorb.anzahl*warenkorb.einzelpreis) AS Storno_Total
FROM
auftrag
Inner Join warenkorb ON warenkorb.auftrag_id = auftrag.auftrag_id
WHERE
auftrag.auftrag_status =  '-1'
GROUP BY 
DATE_FORMAT(auftrag.auftragseingang,'%y%m') 
WITH ROLLUP
eigentlich recht simpel, zeige wert und anzahl aller stornierten auftraege (status = -1) an, fasse nach monat zusammen (DATE_FORMAT(auftrag.auftragseingang,'%y%m') = '0901' = januar 2009) .
allerdings zeigt meine letzte 'ROLLUP' zeile jetzt den letzten monat an - wie kann ich es so aendern das dort 'Total' steht? auf https://dev.mysql.com/doc/refman/5.0/en ... fiers.html benutzen die ifnull, allerdings geht das bei mir nicht da der wert nicht null ist...?

Verfasst:
von

Verfasst: 23.06.2009, 11:28
von bloddy newbie
Der Wert ist nicht NULL, da du es ja formatierst ;-). Also wird hier der aktuelle Zeitstempel genommen... denn NULL is nun mal nix, was einen Timestamp enthält und dann wird NOW() genommen.

Code: Alles auswählen

SELECT
   CASE 
      WHEN auftrag.auftragseingang IS NULL THEN 'Total' 
      ELSE DATE_FORMAT(auftrag.auftragseingang, '%b %y')  
   END AS Monat,
   COUNT(DISTINCT auftrag.auftrag_id) as Bestellungen,
   SUM(warenkorb.anzahl*warenkorb.einzelpreis) AS Storno_Total
FROM 
   auftrag
   JOIN warenkorb 
      ON warenkorb.auftrag_id = auftrag.auftrag_id
WHERE 
   auftrag.auftrag_status =  '-1'
GROUP BY 
   LEFT(auftrag.auftragseingang, 7) 
   WITH ROLLUP
So sollte es klappen ;-)

Grüße BN