Sql Oracle Pivot-多级转换
我有以下数据Sql Oracle Pivot-多级转换,sql,oracle,oracle11g,pivot,Sql,Oracle,Oracle11g,Pivot,我有以下数据 C1 C2 C3 c4 1 C 1 2 1 M 0 2 2 C 2 3 2 M 4 3 我想把它当作一个支点 C1 C2 C3 C4 C5 # C C M M 1 1 2 0 2 2 2 3 4 3 我怎样才能做到这一点 逻辑: 它应该始终在C1级别分组。 C2数据将是C3和C4中数据的列标题。您可以在以下查询中使用条件聚合: with t(C1, C2, C3, C
C1 C2 C3 c4
1 C 1 2
1 M 0 2
2 C 2 3
2 M 4 3
我想把它当作一个支点
C1 C2 C3 C4 C5
# C C M M
1 1 2 0 2
2 2 3 4 3
我怎样才能做到这一点
逻辑:
它应该始终在C1级别分组。
C2数据将是C3和C4中数据的列标题。您可以在以下查询中使用条件聚合:
with t(C1, C2, C3, C4) as
(
select 1,'C',1,2 from dual union all
select 1,'M',0,2 from dual union all
select 2,'C',2,3 from dual union all
select 2,'M',4,3 from dual
)
select null as C1, min(C2) as C2, min(C2) as C3, max(C2) as C4, max(C2) as C5
from t
union all
select C1,
to_char(sum(case when C2='C' then C3 end)),
to_char(sum(case when C2='C' then C4 end)),
to_char(sum(case when C2='M' then C3 end)),
to_char(sum(case when C2='M' then C4 end))
from t
group by C1;
C1 C2 C3 C4 C5
-- -- -- -- --
C C M M
1 1 2 0 2
2 2 3 4 3
您能解释一下从您的输入数据中获得预期输出的逻辑吗?在您提出的回答“假设C2中有多个值,例如:a,B…Z”下的一条评论中。如果这是一个对您很重要的案例,您应该编辑您的问题以包含此类数据,并显示您期望从中得到的结果。您好,假设C2中有多个值,例如:a,B…Z,那么第一行和其余行之间没有相关性。@RamKumar是的,您是对的。它解决了你问题中的问题。但是不可能考虑一个动态的解决方案,只要你需要保留第一行(比如<代码>空,C,C,M,M< /代码>)@ RamKumar——你就可以发布一个有代表性的测试数据样本,包括边缘情况。要求人们提供解决方案,然后说“啊,是的,但是我以前没有提到的其他条件呢?”是不合理的