SQL 服务器从 CASE 语句中删除不需要的行

SQL Server Remove unwanted rows from a CASE statement

我用一个 CASE 语句做了一个 SELECT,如下所示:

SELECT DISTINCT
n.NiveauId, n.Description,
CASE WHEN n.NiveauId NOT IN (SELECT ccs.idNiveau WHERE ccs.centreCout = 60001) THEN 0 ELSE 1 END AS attribue
FROM pa.dbo.Niveau n
JOIN BDC.dbo.CentreCoutSecteur ccs ON n.NiveauId = ccs.idNiveau

说明: 如果 "NiveauId" 不存在于另一个 table 中,则 "attribue" 的值为 0。否则,如果存在,则值为 1。

这有效,但包含 1 的每一行也显示包含 0 的同一行。

示例:

如何更改 SELECT 查询以删除不需要的包含 0 的重复行?

提前致谢!

尝试将 select 包装在最大值中(如果您只想要属性值最高的行。

SELECT b.NiveauID, b.Description, MAX(b.attribue)
FROM
    (SELECT DISTINCT
        n.NiveauId, n.Description,
        CASE WHEN n.NiveauId NOT IN (SELECT ccs.idNiveau WHERE ccs.centreCout = 60001) THEN 0 ELSE 1 END AS attribue
    FROM pa.dbo.Niveau n
    JOIN BDC.dbo.CentreCoutSecteur ccs ON n.NiveauId = ccs.idNiveau) b
Group By b.NiveauID, b.Description