Sql查询帮助-从CASE-WHEN语句中删除重复项
我需要帮助写一个查询,看看客户是否有特定的产品 正如您将从第一个图像中看到的,ID4169137返回了2行。我真的想把结果合并成一个信号行。也就是说,如果任一行中都有YES,则返回YES。如果两者都是NO,则返回NO 下面是我希望输出的样子 这是我一直在处理的问题Sql查询帮助-从CASE-WHEN语句中删除重复项,sql,sql-server,Sql,Sql Server,我需要帮助写一个查询,看看客户是否有特定的产品 正如您将从第一个图像中看到的,ID4169137返回了2行。我真的想把结果合并成一个信号行。也就是说,如果任一行中都有YES,则返回YES。如果两者都是NO,则返回NO 下面是我希望输出的样子 这是我一直在处理的问题 SELECT distinct A.ID as 'ID' ,(CASE WHEN b.isProductA = 1 THEN 'Yes' ELSE 'No' END) as 'A' ,(CA
SELECT distinct A.ID as 'ID'
,(CASE WHEN b.isProductA = 1 THEN 'Yes' ELSE 'No' END) as 'A'
,(CASE WHEN b.isProductB = 1 THEN 'Yes' ELSE 'No' END) as 'B'
,(CASE WHEN b.isProductC = 1 THEN 'Yes' ELSE 'No' END) as 'C'
,(CASE WHEN b.isProductD = 1 THEN 'Yes' ELSE 'No' END) as 'D'
,(CASE WHEN b.isProductE = 1 THEN 'Yes' ELSE 'No' END) as 'E'
,(CASE WHEN b.isProductF = 1 THEN 'Yes' ELSE 'No' END) as 'F'
FROM [source].[Opportunity] A
INNER JOIN
(
SELECT distinct ProductFamilyName, isProductA, isProductB, isProductC, isProductD, isProductE, isProductF
FROM [reference].[ProductFamilyMapping] B
) b ON a.ProductFamily = b.ProductFamilyName
试试这个
SELECT Z.ID as 'ID',
(CASE WHEN Z.isProductA > 0 THEN 'Yes' ELSE 'No' END) as 'A',
(CASE WHEN Z.isProductB > 0 THEN 'Yes' ELSE 'No' END) as 'B',
(CASE WHEN Z.isProductC > 0 THEN 'Yes' ELSE 'No' END) as 'C',
(CASE WHEN Z.isProductD > 0 THEN 'Yes' ELSE 'No' END) as 'D',
(CASE WHEN Z.isProductE > 0 THEN 'Yes' ELSE 'No' END) as 'E',
(CASE WHEN Z.isProductF > 0 THEN 'Yes' ELSE 'No' END) as 'F'
FROM
(
SELECT A.ID,
SUM(b.isProductA) as total_A,
SUM(b.isProductB) as total_B,
SUM(b.isProductC) as total_C,
SUM(b.isProductD) as total_D,
SUM(b.isProductE) as total_E,
SUM(b.isProductF) as total_F
FROM [source].[Opportunity] A
INNER JOIN
(
SELECT distinct ProductFamilyName, isProductA, isProductB, isProductC, isProductD, isProductE, isProductF
FROM [reference].[ProductFamilyMapping] B
) b ON a.ProductFamily = b.ProductFamilyName
GROUP BY A.ID
) Z;
不需要case,直接使用聚合函数即可:
SELECT ID,
MAX(A) AS A,
MAX(B) AS B,
MAX(C) AS C,
MAX(D) AS D,
MAX(E) AS E,
MAX(F) AS F
FROM ...
GROUP BY ID;
:
| ID | A | B | C | D | E | F |
|---------|----|----|-----|-----|-----|-----|
| 4169137 | no | no | yes | yes | yes | yes |
通过将“否”转换为0,将“是”转换为1,并检查每列的总和是否大于0,您能在数字上做到这一点吗?感谢Vashi的反馈。我不断收到以下错误“Z附近的语法不正确”