sql >> Database teknologi >  >> RDS >> Sqlserver

SQL reviderer tabeldata til en mere kompakt form

declare @t table(Id1 int, Id2 int)
insert @t values (100, 50)
insert @t values (    120,    70)
insert @t values (    70,     50)
insert @t values (    34,     20)
insert @t values (    50,     40)
insert @t values (    40,     10)

;with a as
(
-- find all rows without parent <*>
select id2, id1 from @t t where not exists (select 1 from @t where t.id1 = id2)
union all -- recusive work down to lowest child while storing the parent id1 
select t.id2 , a.id1
from a
join @t t on a.id2 = t.id1
)
-- show the lowest child for each row found in <*>
select id1, min(id2) id2 from a
group by id1

Resultat:

id1         id2
----------- -----------
34          20
100         10
120         10



  1. Er det muligt at flytte kolonnedata nedad i en MySQL-tabel?

  2. vis billede via imageurl i listevisning

  3. Hvordan tilknyttes Postgres _INT8 til Java-enhed ved hjælp af Hibernate?

  4. Indlejret eller administreret Oracle-instans til integrationstest