我想执行一个SQL语句,有两个表
Table Name Description
********* *********
H_person Employee Data
Modelorg Position Data
我想写一个显示“谁与谁联系”的sql。在h_person表中
Fıeld Name Description
********* *********
p_no Employee ID
P_ad Employee Name
P_soyad Employee Surname
P_pzsyn Employee Position ID
在Modelorg表中
Fıeld Name Description
********* *********
Pozkod Position ID
Pozad Position Name
USTPOZKOD the upper position (POZKOD connected to USTPOZKOD)
USTPOZKOD也是POZKOD的同时,还有层次连接。
我想形成一个报告,显示人员ID,姓名,姓氏,职位名称,上部职位名称,经理ID和Maneger名称 - 姓氏(帮助上位置ID)。
此外,有时Upperpostion可能为空,并且在执行报告时,它将为null。我想添加一个规则,如果upperposition为null,则带上2级上层经理
在H_person表中 第一数据 * ** * ** P_no = 14556 P_ad =约翰 p_Soyad = Onel P_Pzsyn = 72878 /客户专员 第二数据 P_no = 14656 P_AD =萨拉 p_Soyad = Yildiz P_Pzsyn = 5455 /客户经理 * ** * ** 在Modelorg表中 Pozkod = 72878 Pozad =帐户专员 Ustpozkod = 5455(客户经理)USTPOZKOD同时也是一个pozkod。
选择p_no,p_ad,p_soyad,Pozad,USTPOZKOD(我们将pozkod连接到USTPOZKOD,我想带来“谁持有这个USTPOZKOD(NAME,姓氏)来自h_person,modelorg。
USTPOZKOD也等于POZKOD,因为有人担任此职位
答案 0 :(得分:1)
您需要使用common table expression (CTE)来构建递归查询。
一个例子:
WITH #rec AS
(
SELECT ID, ParentID
FROM RecTable
WHERE ParentID = 0
UNION ALL
SELECT R.ID, R.ParentID
FROM RecTable R
INNER JOIN #rec P ON R.ParentID = P.ID
)
SELECT *
FROM #rec