Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: [SQL] Zeilen teilweise zu Spalten machen

  Alt 22. Okt 2015, 16:51
MKinzler hat's schon auf den Kopf getroffen glaube ich. Folgendes liefert genau das gesuchte, und ist sogar unerwartet flott dabei:
SQL-Code:
SELECT
   h.mDate mDate,
   SUM(CASE WHEN (h.mID=21) THEN mMIN ELSE 0 END) L1_min,
   SUM(CASE WHEN (h.mID=21) THEN mAVG ELSE 0 END) L1_avg,
   SUM(CASE WHEN (h.mID=21) THEN mMAX ELSE 0 END) L1_max,
   SUM(CASE WHEN (h.mID=22) THEN mMIN ELSE 0 END) L2_min,
   SUM(CASE WHEN (h.mID=22) THEN mAVG ELSE 0 END) L2_avg,
   SUM(CASE WHEN (h.mID=22) THEN mMAX ELSE 0 END) L2_max,
   SUM(CASE WHEN (h.mID=23) THEN mMIN ELSE 0 END) L3_min,
   SUM(CASE WHEN (h.mID=23) THEN mAVG ELSE 0 END) L3_avg,
   SUM(CASE WHEN (h.mID=23) THEN mMAX ELSE 0 END) L3_max
FROM
   history h
WHERE
   (h.mIntervalID = 6) AND
   (h.mDate BETWEEN '2015-10-10AND NOW()) AND
   (h.mID IN (21,22,23))
GROUP BY
   h.mDate
Die IDs setze ich dann via Parameter aus meinem Programm, das dann auch gleich sicher stellt, dass es sich wirklich um Werte für L1-L3 handelt. Danke euch!!

@jobo: Ja, tun sie. Allerdings ist die Abfrage hier dermaßen schnell unterwegs, dass ich fast glaube dass die "missbrauchte" Aggregation hier kaum zu Buche schlägt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat