1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Logikunterstützung erwünscht

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von IchHH, 5 August 2019.

  1. IchHH

    IchHH Datenbank-Guru

    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.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    was spricht gegen die Anwendung von BETWEEN ?
     
  3. IchHH

    IchHH Datenbank-Guru

    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.
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden