Hallo Leute!
Sorry wegen dem Betreff, aber was besseres ist mir nicht eingefallen
Ich versuche mittels SSRS (SQL Server Reporting Services) Jahresübersichten zu erstellen, komme aber nicht auf eine gescheite Lösung.
Also, in einer Datenbank werden in Tabelle 1 die Automarken festgelegt. In Tabelle 2 wird das verkaufte Auto (AutoID + Datum) eingetragen.
Nun zum Problem:
Ich will von jedem Jahr die Anzahl der verkauften Autos je Marke aufsummieren (siehe ganz unten) => soll dynamisch steuerbar sein z.B. nur für die Jahre 2006-2010 oder für 2003-2007 usw..
Mit dem folgendem Code erzeuge ich für bestimmte Jahre (2006-2010) das Ergebnis:
Ich will aber nicht nur für diese Jahre erzeugen, sondern das ganze dynamisch machen, soadass ich z.B. für 2009-2010 erzeugen kann oder von 2001-2010 usw.
Ich habe mit temporären Tabellen versucht:
Das Problem ist, dass beim zweiten durchlauf die Spalten die gleichen Namen haben wie die davor. Und die Spalten kann ich nicht dynamisch machen. Ich habe z.B. versucht statt "As Autoanzahl2010" "@variable1" zu geben, aber das mag er nicht (und ja ich habe die Variable davor declariert).
Mit INNER JOIN habe ich auch versucht aber klappt auch nicht, ausserdem schaffe ich es nicht dynamisch zu gestalten
Ich bin solangsam am verzweifeln. Habe das Problem von jeder Seite schon versucht zu lösen. Jemand eine Idee? Bin über jeden Tipp dankbar!
Hier noch ne kurze Übersicht zu den Tabellen (habe sie extra so vereinfacht).
Tabelle 1
Tabelle 2:
Ergebnis soll sein:
Sorry wegen dem Betreff, aber was besseres ist mir nicht eingefallen
Ich versuche mittels SSRS (SQL Server Reporting Services) Jahresübersichten zu erstellen, komme aber nicht auf eine gescheite Lösung.
Also, in einer Datenbank werden in Tabelle 1 die Automarken festgelegt. In Tabelle 2 wird das verkaufte Auto (AutoID + Datum) eingetragen.
Nun zum Problem:
Ich will von jedem Jahr die Anzahl der verkauften Autos je Marke aufsummieren (siehe ganz unten) => soll dynamisch steuerbar sein z.B. nur für die Jahre 2006-2010 oder für 2003-2007 usw..
Mit dem folgendem Code erzeuge ich für bestimmte Jahre (2006-2010) das Ergebnis:
Code:
SELECT Marke, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang1 AND datum < @jahr_ende1 AS Autoanzahl2006, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang2 AND datum < @jahr_ende2 AS Autoanzahl2007, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang3 AND datum < @jahr_ende3 AS Autoanzahl2008, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang4 AND datum < @jahr_ende4 AS Autoanzahl2009, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang5 AND datum < @jahr_ende5 AS Autoanzahl2010 FROM Tabelle1 b
Ich habe mit temporären Tabellen versucht:
Code:
WHILE @dauer > 0 BEGIN SELECT @dauer = @dauer - 1; SELECT Marke, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang1 AND datum < @jahr_ende1 AS Autoanzahl2006, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang2 AND datum < @jahr_ende2 AS Autoanzahl2007, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang3 AND datum < @jahr_ende3 AS Autoanzahl2008, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang4 AND datum < @jahr_ende4 AS Autoanzahl2009, (SELECT COUNT(AutoID) from Tabelle2 WHERE AutoID=b.ID AND datum >= @jahr_anfang5 AND datum < @jahr_ende5 AS Autoanzahl2010 INTO #zwischenspeichern FROM Tabelle1 b END
Mit INNER JOIN habe ich auch versucht aber klappt auch nicht, ausserdem schaffe ich es nicht dynamisch zu gestalten
Ich bin solangsam am verzweifeln. Habe das Problem von jeder Seite schon versucht zu lösen. Jemand eine Idee? Bin über jeden Tipp dankbar!
Hier noch ne kurze Übersicht zu den Tabellen (habe sie extra so vereinfacht).
Tabelle 1
Code:
ID Marke 1 BMW 2 Audi 3 Mercedes 4 Porsche 5 Ferrari
Code:
AutoID datum 1 20090101 1 20100303 1 20100404 2 20100505 2 20090606 2 20100707 3 20080101 3 20080202 3 20100404 4 20080505 4 20100606 4 20100707
Ergebnis soll sein:
Code:
Marke 2010 2009 2008 BMW 2 1 0 Audi 2 1 0 Mercedes 2 0 1 Porsche 2 0 1
Comment