按照oracle的文档,pivot语句中in后面的列如果不固定,只能使用xml格式的返回结果,如:
...
SQL> SELECT *
2 FROM pivot_data
3 PIVOT XML
4 (SUM(sal) FOR deptno IN (ANY));
JOB DEPTNO_XML
--------- ---------------------------------------------------------------------------
ANALYST 206600
CLERK 10143020
= "SUM(SAL)">2090
301045
MANAGER 10269520
= "SUM(SAL)">3272.5
30n>3135
如果不想要xml格式的结果,就只能使用把in之间的内容提前计算出来,动态拼接成sql语句,使用execute immediately动态执行。