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

Schleife bauen

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

  1. IchHH

    IchHH Datenbank-Guru

    Hallo alle zusammen,

    leider habe ich Schwierigkeiten eine Schleife zubauen, die nichts weiter tut, als eine Zeile die unter anderem eine Jahreszahl (year) beinhaltet zu duplizieren und die Zeile mit samt der Jahrezahl +1,+2, -1 und -2 darstellt. Kann da jemand helfen?

    Grüße aus Hamburg
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Okay. Angenommen, wir haben:

    Code:
    test=*# select * from ich_hh;
     id | year |       data       
    ----+------+------------------
      1 | 2019 | das ist ein test
      2 | 1999 | ein anderer text
    (2 rows)
    
    Und Du willst nun für den Eintrag mit id=1 5 Zeilen, von 2017 bis 2012?

    Code:
    test=*# with x as (select id, year, year-2 a, year-1 b, year+1 c, year+2 d, data from ich_hh where id = 1) select generate_series(a,b), data from x union all select year, data from x union all select generate_series(c,d), data from x;
     generate_series |       data       
    -----------------+------------------
                2017 | das ist ein test
                2018 | das ist ein test
                2019 | das ist ein test
                2020 | das ist ein test
                2021 | das ist ein test
    (5 rows)
    
    passt das soweit?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Nachtrag: generate_series() bibt es nicht in M$SQL, kann man wohl aber nachbauen: generate_series
     
  4. IchHH

    IchHH Datenbank-Guru

    Hallo akretschmar,

    dein Ergebnis ist genau das was ich suchte. Wie du aber selber sagtest ist die Funktion in SQL nicht vorhanden und das Nachbauen aufgrund deines Links ist mir nicht möglich, da ich nicht versiert genug bin in SQL um zu verstehen was dort passiert um es auf den System umzusetzen.

    Gruße aus Hamburg.
     
  5. castorp

    castorp Datenbank-Guru

    Achtung: Klugscheisser Modus - ziemlich off-topic

    SQL ist nur eine Abfragesprache, nicht der Name eines spezifischen Datenbankproduktes (jede relationale Datenbank ist eine "SQL Datenbank")

    Das Produkt, dass Du meinst heißt "SQL Server" (nicht einfach nur "SQL").
     
    akretschmer gefällt das.
  6. ukulele

    ukulele Datenbank-Guru

    Wenn es immer um 5 feste Werte geht, 2 Vorjahre, 2 Folgejahre, dann kannst du es auch banal mit UNION ALL machen.
    Code:
    SELECT jahr,daten FROM tabelle UNION ALL SELECT jahr+1,daten FROM tabelle UNION ALL ...
     
Die Seite wird geladen...

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