在SQL自联接后得到正确的结果

时间:2017-02-22 22:38:55

标签: sql sql-server self-join

我有一个查询,我试图让一个实体与其正确的位置相关联。有一位医生(id = 538)。该医生可以在多个地点(praclocid)和实体工作。这是我使用自联接创建复杂查询后得到的数据集:

    doctorid   praclocid      entity   praclocid2  LocName  EntityName
    538              214        123    NULL        NULL     ECS PB
    538              214        124    NULL        NULL     ECS JK
    538              214        125    NULL        NULL     Memorial
    538              512        123    NULL        NULL     ECS PB
    538              512        124    NULL        NULL     ECS JK
    538              512        125    NULL        NULL     Memorial
    538              315        123    NULL        NULL     ECS PB
    538              315        124    315         HospA    ECS JK
    538              315        125    NULL        NULL     Memorial

如果praclocid = praclocid2,EntityName将只有一个LocationName。否则LocationName应为null。这就是为什么只有一个记录带有填充的LocationName。

最终结果应如下所示:

    EntityName       LocName
    ECS JK           HospA 
    ECS PB           NULL
    Memorial         NULL

通过将主查询放入CTE,我可以获得Entity ECS JK及其相应的HospA位置。我无法弄清楚如何获得其他两个实体及其相应的Null位置。我尝试创建第二个CTE以获得该部分,但它并没有给我正确的输出。我觉得我遇到了障碍。

有什么建议吗?

由于

0 个答案:

没有答案