Oracle 在SQL中将多行汇总为一行
如何将同一个人的不同列中的值(最好使用PL/SQL)滚动到一列中 我想将其转换为:Oracle 在SQL中将多行汇总为一行,oracle,plsql,Oracle,Plsql,如何将同一个人的不同列中的值(最好使用PL/SQL)滚动到一列中 我想将其转换为: NAME SUB1 SUB2 SUB3 SUB4 A PASS A PASS A PASS A PASS 进入: NAME SUB1 SUB2 SUB3 SUB4
NAME SUB1 SUB2 SUB3 SUB4
A PASS
A PASS
A PASS
A PASS
进入:
NAME SUB1 SUB2 SUB3 SUB4
A PASS PASS PASS PASS
我试着使用'stuff'函数,但这只适用于将所有值合并到一个字段中。有什么方法可以做到这一点吗?一堆max完成了这项工作(至少,根据您目前发布的内容)
顺便问一下,你的意思是说“最好使用SQL”?为什么要使用PL/SQL?大量的MAX完成了这项工作(至少,根据您目前发布的内容)
顺便问一下,你的意思是说“最好使用SQL”?为什么要使用PL/SQL?为什么要使用存储过程?这可以通过使用普通sqlserver来实现为什么需要存储过程?这可以使用普通SQL来完成
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>