Benutzer mit den meisten Antworten
SQL-Abfrage mit mehreren Pivot-Bereichen

Frage
-
Hallo und guten Tag
Es soll per SQL eine Liste angezeigt werden, in der zwei Pivot-Bereiche erforderlich sind.
Zum einen Bestellungen in einer Wochenansicht und daneben Wareneingänge in einer Wochenansicht.
Gibt es da eine Möglichkeit in einem SQL zwei Pivot-Bereiche anzulegen?
Oder über Subqueries?Vielen Dank für Eure Aufmerksamkeit.
VG, Karl
Antworten
-
Hallo Karl,
natürlich geht das, wie ich bereits in einem anderen Beitrag den Pivot Operator beschrieben habe, nur musst du das ganze für jedes Feld durchführen und anschließend zusammen joinen, nicht gerade übersichtlich, funktioniert aber.
hier der Link zu meinem anderen Beitrag in diesem Forum, da findest du auch eine lösung für dynamische PIVOTS: SQL Abfrage Summen/Gruppen
Use TempDB Create Table #Test (Kdnr varchar(4), Gruppe varchar(6), Umsatz decimal(4,2), Anzahl int) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup01', 70.10,1) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup02', 50.00,2) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup01', 70.10,4) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup01', 40.20,5) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup02', 15.10,1) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup02', 50.00,3) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup01', 70.10,5) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup02', 15.10,7) --Statisches Pivot --Hier werden die Pivot Spalten Statisch vergeben Select a.Kdnr, a.[Grup01] UmsatzGrp1 ,a.[Grup02] UmsatzGrp2 ,b.[Grup01] AnzahlGrp1 ,b.Grup02 AnzahlGrp2 from ( Select Kdnr, [Grup01] , [Grup02] from ( Select Kdnr, Gruppe, Umsatz from #Test ) pv Pivot ( Sum(Umsatz) FOR Gruppe in ([Grup01],[Grup02]) ) as pvt ) as a Join ( Select Kdnr, [Grup01] , [Grup02] from ( Select Kdnr, Gruppe, Anzahl from #Test ) pv Pivot ( Sum(Anzahl) FOR Gruppe in ([Grup01],[Grup02]) ) as pvt ) as b On a.Kdnr=b.Kdnr
Ich hoffe es hilft dir etwas weiter.
Gruß
Theo
- Als Antwort vorgeschlagen Falk Krahl Mittwoch, 25. April 2012 05:41
- Als Antwort markiert Robert BreitenhoferModerator Montag, 7. Mai 2012 14:27
Alle Antworten
-
Habe ich schon gemacht, Problem an der Sache ist, das man den SQL zusammenfügen muss, damit das hinhaut.
Bsp: (wie ich dich verstehe)
Teilenummer: Woche 42 BE Woche 42 WE Woche 43 BE Woche 43 WE
4711 240 000 178 000 25 000 70 000
0815 45 700 46 000 22 000 21 300
usw...
Sowas geht, den SQL kann aber kein Mensch mehr lesen, selbst ich habe Schwierigkeiten diesen Select wieder zu entwirren :-)
Ich kann dir den SELECT nicht posten, da Firmen Daten angezeigt werden würde, dieser SELECT hat aber über 100 Zeilen mit integrierten CURSOR, würde ich selbst so nicht mehr machen.Dafür gibts die Anaylses Services :-)
Einfach nen CUBE erzeugen mit allen DAten und den Usern für Excel bereitstellen.
Bis dann
thx
-
Hallo Karl,
natürlich geht das, wie ich bereits in einem anderen Beitrag den Pivot Operator beschrieben habe, nur musst du das ganze für jedes Feld durchführen und anschließend zusammen joinen, nicht gerade übersichtlich, funktioniert aber.
hier der Link zu meinem anderen Beitrag in diesem Forum, da findest du auch eine lösung für dynamische PIVOTS: SQL Abfrage Summen/Gruppen
Use TempDB Create Table #Test (Kdnr varchar(4), Gruppe varchar(6), Umsatz decimal(4,2), Anzahl int) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup01', 70.10,1) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup02', 50.00,2) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup01', 70.10,4) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup01', 40.20,5) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup02', 15.10,1) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K123', 'Grup02', 50.00,3) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup01', 70.10,5) Insert into #Test (kdnr,Gruppe,Umsatz,Anzahl) Values ('K133', 'Grup02', 15.10,7) --Statisches Pivot --Hier werden die Pivot Spalten Statisch vergeben Select a.Kdnr, a.[Grup01] UmsatzGrp1 ,a.[Grup02] UmsatzGrp2 ,b.[Grup01] AnzahlGrp1 ,b.Grup02 AnzahlGrp2 from ( Select Kdnr, [Grup01] , [Grup02] from ( Select Kdnr, Gruppe, Umsatz from #Test ) pv Pivot ( Sum(Umsatz) FOR Gruppe in ([Grup01],[Grup02]) ) as pvt ) as a Join ( Select Kdnr, [Grup01] , [Grup02] from ( Select Kdnr, Gruppe, Anzahl from #Test ) pv Pivot ( Sum(Anzahl) FOR Gruppe in ([Grup01],[Grup02]) ) as pvt ) as b On a.Kdnr=b.Kdnr
Ich hoffe es hilft dir etwas weiter.
Gruß
Theo
- Als Antwort vorgeschlagen Falk Krahl Mittwoch, 25. April 2012 05:41
- Als Antwort markiert Robert BreitenhoferModerator Montag, 7. Mai 2012 14:27
-
Hallo kamaerja,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.