Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर पदानुक्रम में शीर्ष स्तर के माता-पिता को प्राप्त करने के लिए कार्य करता है

पुनरावर्ती सीटीई के साथ ऊपर से बच्चों तक:

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

डेटा के लिए:

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)

यह आउटपुट उत्पन्न करता है:

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

फिडल 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. SQL सर्वर में तिथियों की तुलना कैसे करें

  2. कर्सरिंग के बजाय अन्य समाधान

  3. क्यों एक साधारण टी-एसक्यूएल यूडीएफ फ़ंक्शन कोड निष्पादन को 3 गुना धीमा कर देता है

  4. क्या किसी पंक्ति को अद्यतन करना, या उसे हटाना और एक नया सम्मिलित करना तेज़ है?

  5. SQL सर्वर में 2 अलग-अलग कॉलम के साथ समूहबद्ध करें