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
我用一个 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