Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL merevisi data tabel ke bentuk yang lebih ringkas

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

Hasil:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menerapkan Failover di MS SQL Server 2017 Standard

  2. Kolom mirip identitas tetapi berdasarkan kriteria Kelompokkan

  3. Cara Mengekspor hasil kueri ke .csv atau File Tab Delimited di SQL Server Management Studio(SSMS) - Tutorial SQL Server / TSQL Bagian 23

  4. Memahami hubungan antara fungsi peringkat, OVER(), GROUP BY?

  5. Membalikkan/Menghancurkan GROUP BY