繁体   English   中英

具有相同 ID 但值不同的两行的 CASE

[英]CASE on two rows with identical IDs but different values

我有下表。 我需要的是一个 sql 查询,它将分析具有相同 id 的两个/多个行,并且:(1)CASE 'Result' 对两行都相同,打印 'Passed'; (2) CASE 'Result' 两行不一样,打印 'Failed'。

ID  Result  
73  2000    Passed
73  2000    
43  2000    Failed
43  1003    

在此处输入图片说明

一切皆有可能吗??

一种选择使用EXISTS

SELECT DISTINCT ID
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t1.ID = t2.ID AND t2.Result <> t1.Result);

另一个选项使用聚合:

SELECT ID
FROM yourTable
GROUP BY ID
HAVING COUNT(DISTINCT Result) = 1;

演示

如果您想要每个 id 一行,请使用group by

select id,
       (case when min(result) = max(result) then 'Passed'
             else 'Failed'
        end) as flag
from t
group by id;

如果您想要原始表的所有行上的值,那么很简单:

select id,
       (case when not exists (select 1
                              from t t2
                              where t2.result) = t.result
                             )
             then 'Passed' else 'Failed'
        end) as flag
from t
group by id;

然而,并将结果在一行上是有问题的。 无法区分行,因此更具挑战性(并非不可能,但我怀疑上述方法之一可以解决您的真正问题)。

试试下面:

select id, case when count (distinct result)=1 then 'Passed' else 'Failed' end
group by id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM