Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

SQL-String für Diagramm

Begonnen von noah, März 29, 2017, 08:58:44

⏪ vorheriges - nächstes ⏩

noah

Hallo,
ich möchte in einer Auswertung ein (Linien-)Diagramm für die Übersicht einer Stundenkontenentwicklung anzeigen, und das für derzeit 18 Abteilungen. Das Diagramm habe ich bereits, und auch die  Linien werden mir angezeigt. Der Code dafür sieht in etwa so aus:
SELECT A.Stichtag, Sum(IIF(A.Abteilung='F11',A.Std,Null)) As F11, Sum(IIF(A.Abteilung='F12',A.Std,Null)) AS F12, (...) FROM tbl_Stundenkonten A WHERE A.Stichtag BETWEEN (...) GROUP BY A.Stichtag (...)

Das ist aber zu statisch, da ich ja nicht garantieren kann, ob nicht irgendwann mal Abteilungen hinzukommen. Wie kann ich den String so schreiben, dass alle vorkommenden Abteilungen berücksichtigt werden? Für die Abteilungen gäbe es eine eigene Tabelle, aus der ersichtlich ist, welche Abteilungen es bei uns gibt.


 

Lachtaube

Stichwort: Kreuztabellenabfrage.

Gegeben sei:
abteilung 
abteilung
F11
F12
F13
F14
F20
stdkonto 
stichtagabteilungstd
20.03.2017
F11
413,5
20.03.2017
F13
221
20.03.2017
F14
312,75
20.03.2017
F20
132
21.03.2017
F11
398
21.03.2017
F20
141
TRANSFORM SUM(k.std) AS s
SELECT k.stichtag
FROM   abteilung a
       LEFT JOIN stdkonto k
              ON a.abteilung = k.abteilung
GROUP  BY k.stichtag
PIVOT  a.abteilung;


liefert dann (leider mit einer Zeile mit Nullwerten (von mir wegen der Forendarstellung gekennzeichnet).
q 
stichtagF11F12F13F14F20
(null)
(null)
(null)
(null)
(null)
(null)
20.03.2017
413,5
(null)
221
312,75
132
21.03.2017
398
(null)
(null)
(null)
141
Mit einer weiteren Abfrage kann man aber aufräumen.
q_final 
stichtagF11F12F13F14F20
20.03.2017
413,5
(null)
221
312,75
132
21.03.2017
398
(null)
(null)
(null)
141
SELECT *
FROM   q
WHERE  stichtag IS NOT NULL;
Grüße von der (⌒▽⌒)