Benutzer mit den meisten Antworten
SQL-Abfrage mit dynamischer Pivot geht so was?

Frage
-
Hallo liebe SQL-Cracks,
ich habe 2 einfache SQL Tabelen, die miteinander 1:n verknüpft sind.
Ausgabe von Bällen an eine Person an einem bestimmten Datum.Tabelle 01:
IDperson, PersonTabele 02:
IDperson_baelle, IDperson, Datum, AnzahlIch möchte für jede Person die Anzahl von ausgegebenen Bällen an einem bestimten Datum festhalten. Funktioniert auch. Wenn ich die Tabellen mit einem JOIN verknüpfe, dann erhalte ich für jedes Datum von ausgegebenen Bällen eine Zeile. OK. geht auch. Nämlich so:
IDperson, Name, Datum, Anzahl
1, Anna, 01.01.2010, 5
2, Anna, 02.01.2011, 10usw. ...
JETZT das Problem: ich will die Tabelle umformatieren um eine Auswertung in EXCEL zu vereinfachen und zwar soll das Format so sein:
Person, Datum01 , Anzahl01, Datum02 , Anzahl02, Datum03 , Anzahl04, Datum04, Anzahl04
Anna , 01.01.2010, 5 , 02.01.2011, 10 , 16.08.2012, 5
Peter , 01.01.2010, 8 , 02.01.2011, 12
Dave , 01.01.2010, 3 , 02.01.2011, 6 , 16.08.2012, 7, 30.09.2012, 17Lösung 1. ich kann die Tabellen in einer Schleife durchlaufen und mir das mühsam mit c# aufbauen. Z.B. als xml.
Und jetzt endlich die Frage:
Geht das mit einer PIVOT eleganter?Bin daran leider gescheitert. Ich kann die Bälle summieren an einem Datum aber das gewünschte Format bekomme ich nicht hin. Vielleicht konnte ja jemand folgen und hat einen Link oder einen Tipp parat.
Grüße Andi
Antworten
-
Hallo Andi,
wenn Du eh schon das Ergebnis in Excel haben willst, könntest Du dort die Pivot-Funktion nutzen, das würde die Angelegenheit vereinfachen.
Ansonsten müsstest Du ein dynamisches SQL Statement aufbauen, das Dir für die gewünschten Werte die PIVOT Anweisung zusammenstellt und ausführt, siehe z.B. http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with-dynamic-columns-in-sql-server-2005-2008.aspx
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Als Antwort vorgeschlagen Falk Krahl Dienstag, 24. Januar 2012 06:43
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Februar 2012 07:51
Alle Antworten
-
Hallo Andi,
wenn Du eh schon das Ergebnis in Excel haben willst, könntest Du dort die Pivot-Funktion nutzen, das würde die Angelegenheit vereinfachen.
Ansonsten müsstest Du ein dynamisches SQL Statement aufbauen, das Dir für die gewünschten Werte die PIVOT Anweisung zusammenstellt und ausführt, siehe z.B. http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with-dynamic-columns-in-sql-server-2005-2008.aspx
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Als Antwort vorgeschlagen Falk Krahl Dienstag, 24. Januar 2012 06:43
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Februar 2012 07:51
-