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

Fungsi SQL Server untuk mendapatkan induk tingkat atas dalam hierarki

Dengan cte rekursif dari atas ke anak:

with cte as(
  select *, code as ultimate from t where code = under
  union all
  select t.*, c.ultimate from t
  join cte c on c.code = t.under
  where t.code <> t.under
)
select * from cte

Untuk data:

create table t (code int, name varchar(100), under int)
insert into t values
(1, 'National Sales Manager', 1),
(2, 'regional sales manager', 1),
(3, 'area sales manager', 2),
(4, 'sales manager', 3),
(5, 'a', 5),
(6, 'b', 5),
(7, 'c', 5),
(8, 'd', 7),
(9, 'e', 7),
(10, 'f', 9),
(11, 'g', 9)

itu menghasilkan output:

code    name                    under   ultimate
1       National Sales Manager  1       1
5       a                       5       5
6       b                       5       5
7       c                       5       5
8       d                       7       5
9       e                       7       5
10      f                       9       5
11      g                       9       5
2       regional sales manager  1       1
3       area sales manager      2       1
4       sales manager           3       1

Biola http://sqlfiddle.com/#!6/17c12e/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Kolom Terhitung menggunakan data dari tabel lain

  2. Beberapa hasil untuk satu bidang dalam kueri SQL yang digabungkan

  3. Perlu membuat daftar semua pemicu di database SQL Server dengan nama tabel dan skema tabel

  4. SqlRoleProvider:NullReferenceException saat memanggil Roles.GetRolesForUser

  5. Contoh SQL Server UNTUK JSON PATH (T-SQL)