【发布时间】:2016-01-25 18:57:54
【问题描述】:
pivot 函数可从 Oracle 11 获得,我将需要使用 Oracle 9.2 的类似结果。
主要论点是我需要在这样的表中旋转一些具有不同结果的值:
id col3
1 a
1 b
--
2 a
2 a
2 b
--
3 a
3 b
3 c
我的结果应该是这样的
id a b c
1 1 1 0
2 1 1 0
3 1 1 1
要创建“手动”枢轴,我正在使用案例/何时,但我无法理解如何获得不同的价值。
现在查询是这样的:
with t as
( select 1 as id, 'a' as col1 from dual union all
select 1 as id, 'b' from dual union all
select 2 as id, 'a' from dual union all
select 2 as id, 'a' from dual union all
select 2 as id, 'b' from dual union all
select 3 as id, 'a' from dual union all
select 3 as id, 'b' from dual union all
select 3 as id, 'c' from dual
)
select t.id,
count(case when t.col1 = 'a' then 1 end) a,
count(case when t.col1 = 'b' then 1 end) b,
count(case when t.col1 = 'c' then 1 end) c
这会产生正确的值,但显然它只是“计算”总 a/b/c 值而不是不同的值。
感谢支持
【问题讨论】: