将数据转换并分组在一起

时间:2016-06-01 19:39:13

标签: sql oracle plsql

从查询中我检索出我需要的信息,结果如下:

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的,还是它们混合在一起?

1 个答案:

答案 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');