如何处理SQL中的重复行?

时间:2015-07-19 19:30:03

标签: sql

该表具有来自大表的重复ID。我想为每个ID获得一个输出。最好的方法是什么?

MyTable的

ID Col1 Col2
1    X    A
1    Y    B
1    Z    C
2    X    D
2    Y    E
3    Z    F
3    W    G
If Col1 = 'X' and Col2 ='A', then 'Y' is the output for ID1
If Col1 = 'X' and Col2 !='A', then 'N' is the output for ID2
If Col1 != 'X', then 'Y' is the output for ID3

1 个答案:

答案 0 :(得分:0)

If Col1 = 'X' and Col2 ='A', then 'Y' is the output for ID1
If Col1 = 'X' and Col2 !='A', then 'N' is the output for ID2
If Col1 != 'X', then 'Y' is the output for ID3

我认为上面的条件必须为每个id只有1行。您可以使用条件聚合来检查条件是否适用于每组至少1行:

select id,
case when count(case when Col1 = 'X' and Col2 = 'A' then 1 end) > 0 then 'Y'
when count(case when Col1 = 'X' and Col2 <> 'A' then 1 end) > 0 then 'N'
when count(case when Col1 = 'X' then 1 end) > 0 then 'Y'
else '?'
end as output
from mytable
group by id