如何将同一个人A的不同列中的值(最好使用PL / SQL)汇总到一列中?
我想将其转换为
NAME SUB1 SUB2 SUB3 SUB4
A PASS
A PASS
A PASS
A PASS
进入:
NAME SUB1 SUB2 SUB3 SUB4
A PASS PASS PASS PASS
我试图使用“填充”功能,但这只会在一个领域内囊括所有价值。有办法吗?
答案 0 :(得分:4)
一堆MAX可以完成这项工作(至少根据您到目前为止发布的内容)。
SQL> with test (name, sub1, sub2, sub3, sub4) as
2 (select 'a', null, null, null, 'pass' from dual union all
3 select 'a', null, null, 'pass', null from dual union all
4 select 'a', null, 'pass', null, null from dual union all
5 select 'a', 'pass', null, null, null from dual
6 )
7 select name, max(sub1) sub1, max(sub2) sub2, max(sub3) sub3, max(sub4) sub4
8 from test
9 group by name;
N SUB1 SUB2 SUB3 SUB4
- ---- ---- ---- ----
a pass pass pass pass
SQL>
顺便说一句,您实际上是说“最好使用 SQL ”吗?为什么要涉及PL / SQL?