Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: noah am März 29, 2017, 08:58:44

Titel: SQL-String für Diagramm
Beitrag von: noah am März 29, 2017, 08:58:44
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.


 
Titel: Re: SQL-String für Diagramm
Beitrag von: Lachtaube am März 29, 2017, 09:45:05
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;