我有以下格式的數據。在SQL Server中創建層次結構
表1
e_id e_name e_type
-------------------------
1 CBC 2
2 ABC 3
3 N2 1
4 CBC1 3
5 ABC1 3
6 N1 1
表2
N_ID N_Name
---------------
3 N2
6 N1
表3
N_ID E_ID
------------
3 1
3 2
3 3
6 4
6 5
6 6
我想建立一個層次結構如下。
e_id e_name e_type n_id
------------------------------------
6 N1 1 6
4 - ABC1 3 6
5 - CBC1 3 6
3 N2 1 3
4 - ABC 3 3
5 - CBC 2 3
按節點順序(升序),子節點(升序)。
我試着做一些與此類似,
SELECT u.e_id,
CASE WHEN e_TYPE_ID = 1 THEN u.e_name ELSE ' - ' + u.e_name END e_name,
e_TYPE_ID, su.n_ID
FROM table1 u
INNER JOIN table3 su on u.e_id = su.e_id
WHERE EXISTS (SELECT N_ID FROM table2 WHERE N_ID = CASE WHEN u.e_TYPE_ID = 1 THEN u.e_id ELSE n_ID END)
ORDER BY e_TYPE_ID, u.e_name,n_id
但我不能得到正確的次序,有沒有更好的方式來做到這一點?
層次結構始終是兩個級別(即,親子,從來沒有祖父母,父母子女)? – 2010-09-08 16:34:09
我沒有找到你?我的也是兩級(N1 -parent,ABC,CBC-孩子) – 2010-09-08 16:43:26
那你就不需要CTE了。 :)你需要從另一個部門去殺死那個DBA。 – 2010-09-08 16:47:12