首页 > 解决方案 > SQL SELECT ID WHERE 具有相同 ID 的行具有不同的值

问题描述

我需要一些帮助来创建跨行的 SQL 语句。

    SELECT SZ.Stammindex AS ID, S.sEbene1, S.sEbene2, S.sEbene3
    FROM SuchbaumZuordnung SZ 
    LEFT JOIN Suchbaum S 
    ON SZ.gSuchbaumID = S.gID
    WHERE (S.sEbene1 IN ('Test1') 
    AND (S.sEbene2 IN ('Test2') OR S.sEbene2 IS NULL) 
    AND S.sEbene3 IS NULL)

这是我到目前为止得到的

正如您在屏幕截图中看到的,我选择了 ID=10004 和 ID=10005。但实际上我只希望 ID=10005 出现。如前所述,我正在尝试跨行进行过滤。

我的目标是获取所有 ID,其中所有条件都与“AND”相关联,如下所示:

WHERE (sEbene1 IN ('Test1') 
       AND (sEbene2 IN ('Test2') *AND* sEbene2 IS NULL) 
       AND sEbene3 IS NULL)

但这不会返回任何东西。

编辑

表suchbaum结构

表suchbaumZuordung结构

我希望你们能帮助我。

标签: sqlsql-serverssms

解决方案


我怀疑你想要:

SELECT SZ.Stammindex AS ID
FROM SuchbaumZuordnung SZ 
WHERE EXISTS (SELECT 1
              FROM Suchbaum S
              WHERE SZ.gSuchbaumID = S.gID AND
                    S.sEbene1 IN ('Test1') AND
                    sEbene2 IN ('Test2')
             ) AND
       EXISTS (SELECT 1
              FROM Suchbaum S
              WHERE SZ.gSuchbaumID = S.gID AND
                    S.sEbene2 IS NULL AND
                    S.sEbene3 IS NULL
             );

这是在 中寻找两个不同的行Suchbaum,每一个都匹配一个条件。


推荐阅读