Logikunterstützung erwünscht

IchHH

Datenbank-Guru
Beiträge
284
Hallo ihr lieben,

ich benötige einmal dringend Hilfe. Ich habe eine Tabelle die Revenue, Est. Revenue, Target (Calculated) und Jahr beinhaltet. Diese Tabelle möchte ich gerne für ein anderen Tool nutzen. Das andere Tool ist aber nur so gut wie die View/dbo die ich versuche zu erstellen.

Ich möchte wiederum das wenn ich ein Jahr auswähle er mir auch die letzten zwei Jahre vor und nach dem gewählten Jahr angezeigt werden.

Nun dachte ich mir das ich mir eine weitere Spalte anlege (Jahr2) und dort einfach die Werte der zwei Jahre vor und nach dem Jahrfeld selectiere und die Zeilen neue anlegen lasse. So das ich theoretisch jedes Jahr vervierfache.

Habt ihr bessere ideen bzw. eine Idee wie der Code aussehen könnte?

Danke euch.
 
Werbung:
Hallo akretschmer,

gegen BETWEEN spricht allen vor weg, dass das Tool welches auf die Datenbank zugreift nur Daten liest nicht aber Befehle sendet. Normalerweise würde ich dir zustimmen, dass wenn ich beispielsweise 2018 auswähle sage WHERE column_name BETWEEN value1 AND value2 und das ganze dann noch dynamisch mache mittels Variable.
Im Moment sehe ich nur die möglichkeit eine Abfrage zu generieren in der ich eine zweite Spalte anlege und dort minus 1 Jahr rechnen lasse von Ausgangsdatum, dann alles per Union mit der selben Abfrage und minus 2 Jahre rechne, in der neu angelegten Spalte usw...

Was sagt ihr dazu? Bei kleinen Datenmenge ist das bestimmt kein Problem, ich mache mir zur Sorgen wenn es um ein paar hunderttausend Datenssätze geht.
 
Werbung:
Wenn du aber gar keine WHERE-Bedingung übergeben kannst dann doch auch nicht das Ausgangsjahr, soll das in der View hart rein gesetzt werden?

Ich würde falls sinnvoll erst die Datensätze ausfiltern die ich brauche (mit BETWEEN) und aus den Datensätzen dann per FULL OUTER JOIN die Tabelle 4 mal mit sich selbst joinen, du verfünfachst dann die Spaltenanzahl. Oder direkt los joinen, könnte schneller sein, grob:
Code:
SELECT * FROM tabelle t1
FULL JOIN tabelle t2 ON t1.jahr-2 = t2.jahr
FULL JOIN tabelle t3 ON t1.jahr-1 = t3.jahr
FULL JOIN tabelle t4 ON t1.jahr+1 = t4.jahr
FULL JOIN tabelle t5 ON t1.jahr-+2= t5.jahr
WHERE t1.jahr = dein_jahr

Natürlich kannst du die Daten mehrfach joinen, spricht eigentlich auch bei großen Datenmengen nichts dagegen. PIVOT wäre eine Option aber ich vermute das geht in Views nicht weil dann ja die Anzahl der Spalten synamisch wäre. Abgesehen davon mag ich PIVOT nicht besonders.
 
Zurück
Oben