PIVOT zeigt nicht die gewünschten Werte an

zachy

Aktiver Benutzer
Beiträge
35
Hallo Commuinty,

ich möchte mit SQL Server 2014 eine Kreuztabelle erstellen.

Das soll ermittelt werden:
Es soll ermittelt werden, wie viel Umsatz jeder Mitarbeiter pro Jahr (2010 - 2015) gemacht hat.

Der SQL-Code:
Code:
SELECT
    Mitarbeiter,
    2010 AS '2010',
    2011 AS '2011',
    2012 AS '2012',
    2013 AS '2013',
    2014 AS '2014',
    2015 AS '2015'
FROM
(
    SELECT
        m.mit_Vorname + ' ' + m.mit_Nachname AS Mitarbeiter,
        a.art_Preis_VK * bd.bsd_Menge AS Umsatz,
        YEAR(b.bst_Datum) AS Jahr
    FROM tbl_Mitarbeiter AS m
    INNER JOIN tbl_Bestellungen AS b
    ON m.mit_ID = b.bst_Mitarbeiter_fi
    INNER JOIN tbl_Bestelldetails AS bd
    ON b.bst_ID = bd.bsd_bst_ID_fi
    INNER JOIN tbl_Artikel AS a
    ON bd.bsd_art_ID_fi = a.art_ID
) AS Umsaetze
PIVOT
(
    SUM(Umsaetze.Umsatz)
    FOR Umsaetze.Jahr IN ([2010],[2011],[2012],[2013],[2014],[2015])
) AS Umsatz_Pro_Jahr
ORDER BY Mitarbeiter;

Leider ist das Ergebnis nicht das, was ich erwartet habe. Im Wertebereich werden nämlich einfach nur die Jahre ausgegeben - statt den Umsätzen, die ich eigentlich erwartet hätte.

Mitarbeiter 2010 2011 2012 2013 2014 2015
Franz Löffler 2010 2011 2012 2013 2014 2015
Hannelore Werner 2010 2011 2012 2013 2014 2015
Helmut Schuster 2010 2011 2012 2013 2014 2015
Ilse Meyer 2010 2011 2012 2013 2014 2015
Jonathan Werle 2010 2011 2012 2013 2014 2015
Maike Sauer 2010 2011 2012 2013 2014 2015
Ralf Schmidt 2010 2011 2012 2013 2014 2015

Wo ist mein Fehler?

Vielen Dank im Voraus,

Gruß zachy
 
Werbung:
Ich habe jetzt einfach mal in der ersten Abfrage ein * genommen, jetzt funktioniert es...

Ich weiß zwar nicht warum, aber es geht. Hat jemand eine Ahnung?

Code:
SELECT
    *
FROM
(
    SELECT
        m.mit_Vorname + ' ' + m.mit_Nachname AS Mitarbeiter,
        a.art_Preis_VK * bd.bsd_Menge AS Umsatz,
        YEAR(b.bst_Datum) AS Jahr
    FROM tbl_Mitarbeiter AS m
    INNER JOIN tbl_Bestellungen AS b
    ON m.mit_ID = b.bst_Mitarbeiter_fi
    INNER JOIN tbl_Bestelldetails AS bd
    ON b.bst_ID = bd.bsd_bst_ID_fi
    INNER JOIN tbl_Artikel AS a
    ON bd.bsd_art_ID_fi = a.art_ID
) AS Umsaetze
PIVOT
(
    SUM(Umsaetze.Umsatz)
    FOR Umsaetze.Jahr IN ([2010],[2011],[2012],[2013],[2014],[2015])
) AS Umsatz_Pro_Jahr
ORDER BY Mitarbeiter;
 
Werbung:
Zurück
Oben