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
Bookmarks