-
Wow, vielen Dank !
Vg.
 Zitat von Ahoy
Hier eine Variante die die Duplikate entfernt und die Daten wieder in der originalform bereitstellt:
Code:
with
kunden(kdnr, knz1, knz2, knz3, knz4, knz5) as (
values
(1, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE'),
(2, 'AAA', 'BBB', 'BBB', 'CCC', 'DDD')
),
unpivot as (
select distinct
kdnr, knz, dense_rank() over(partition by kdnr order by knz) as knznr
from
kunden
cross join lateral(
values (knz1), (knz2), (knz3), (knz4), (knz5)
) as dt(knz)
)
select
kdnr,
ifnull((select knz from unpivot where unpivot.kdnr = kunden.kdnr and knznr = 1), '') as knz1,
ifnull((select knz from unpivot where unpivot.kdnr = kunden.kdnr and knznr = 2), '') as knz2,
ifnull((select knz from unpivot where unpivot.kdnr = kunden.kdnr and knznr = 3), '') as knz3,
ifnull((select knz from unpivot where unpivot.kdnr = kunden.kdnr and knznr = 4), '') as knz4,
ifnull((select knz from unpivot where unpivot.kdnr = kunden.kdnr and knznr = 5), '') as knz5
from
kunden
-
Man kann das Ganze noch um einige Sub-Selects reduzieren:
Code:
with
kunden(kdnr, knz1, knz2, knz3, knz4, knz5) as (
values
(1, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE'),
(2, 'AAA', 'BBB', 'BBB', 'CCC', 'DDD')
),
unpivot as (
select distinct
kdnr, knz, dense_rank() over(partition by kdnr order by knz) as knznr
from
kunden
cross join lateral(
values (knz1), (knz2), (knz3), (knz4), (knz5)
) as dt(knz)
)
select KDNR, Coalesce(Min(Case When knzNr = 1 Then KNZ End), '') as KNZ1,
Coalesce(Min(Case When knzNr = 2 Then KNZ End), '') as KNZ2,
Coalesce(Min(Case When KnzNr = 3 Then KNZ End), '') as KNZ3,
Coalesce(Min(Case When KnzNr = 4 Then KNZ End), '') as KNZ4,
Coalesce(Min(Case When KnzNr = 5 Then KNZ End), '') as KNZ5
From Unpivot
Group by KdNr;
-
Der cross join lateral reicht ja schon.
Der nachfolgende Selekt bringt die Felder ja wieder nebenenander.
Die Funktion Values mit Komma mehrere Zeilen zu erstellen hatte ich nicht mehr auf dem Schirm.
Das liegt auch daran, dass dies nicht in jedem Dialekt (SQL-Server, Oracle, Firebird, ...) unterstützt wird.
Das spart den Union.
Similar Threads
-
By rr2001 in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 09-01-14, 15:19
-
By M.Kasper in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 25-08-06, 07:32
-
By deni87991 in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 31-01-06, 09:41
-
By Schorsch in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 07-05-04, 11:18
-
By Carsten in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 22-01-02, 08:15
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks