1

我要执行一个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,有层次联系。

  1. 我想形成一份报告,显示人员 ID、姓名、姓氏、职位名称、上层职位名称、经理 ID 和经理姓名-姓氏(持有上层职位 ID)。

  2. 此外,有时 Upperpostion 可能为空,并且在执行报告时,它将为空。我想加一条规则,如果upperposition为null,请带2级上级经理

    在 H_person 表第一个数据 * ** * ** P_no=14556 P_ad=John p_Soyad= Onel P_Pzsyn= 72878 /Account Specialist 第二个数据 P_no=14656 P_ad=Sara p_Soyad= Yildiz P_Pzsyn= 5455 /Account Manager * ** * ** In Modelorg Table Pozkod=72878 Pozad=客户专家 Ustpozkod=5455(客户经理) USTPOZKOD 同时也是一个 pozkod。

  3. 选择 p_no、p_ad、p_soyad、Pozad、USTPOZKOD(我们将 pozkod 连接到 USTPOZKOD,我想从 h_person、modelorg 带来“谁持有这个 USTPOZKOD(NAME, Surname)。

  4. USTPOZKOD 也等于 POZKOD 因为有人担任这个职位

4

1 回答 1

1

您需要使用公用表表达式 (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
于 2012-09-24T12:02:53.040 回答