从查询中我检索出我需要的信息,结果如下:
code | category
-----------
1 | A
1 | A
2 | B
3 | B
3 | B
4 | B
根据这些数据,我希望得到以下结果:
Combination 1&2 | Combination 3&4
---------------------------------
'Both A & B' | 'Just B"
所以正在发生的事情是,如果第一列占据代码为1或2的所有行,那么它将查看是否在所有这些行中:
- 所有等于A类的行都会产生值“Just A”
- 所有等于B类的行都会产生值“Just B”
- 代码1和2中有A类和B类的混合,然后产生“A& B两个”的值。
这将再次发生在第二列内部,除了现在我只会查找代码3和4。在实践中,我实际上将许多代码组合到这些列的一些中,因此一些列将组合2个代码,其他可以组合10个代码,依此类推。基本上我试图看看代码组合是什么类别。它们都是A的,它们都是B的,还是它们混合在一起?
答案 0 :(得分:1)
您可以使用条件聚合:
select (case when min(category) <> max(category) then 'Both A and B'
when min(category) = 'A' then 'A only'
when min(category) = 'B' then 'B only'
end)
from t
where code in (1, 2) and category in ('A', 'B');