Schleife bauen

IchHH

Datenbank-Guru
Beiträge
282
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
 
Werbung:
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?
 
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.
 
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").
 
Werbung:
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 ...
 
Zurück
Oben