select * from (
select name, nums as "Purchase Frequency"
from demo t
)
pivot xml (
sum(nums) for name in (any)
)
如你所见,列 NAME_XML 是 XMLTYPE,其中根元素是 。每个值以名称-值元素对的形式表示。你可以使用任何 XML 分析器中的输出生成更有用的输出
结论
Pivot 为 SQL 语言增添了一个非常重要且实用的功能。您可以使用 pivot 函数针对任何关系表创建一个交叉表报表,而不必编写包含大量 decode 函数的令人费解的、不直观的代码。同样,您可以使用 unpivot 操作转换任何交叉表报表,以常规关系表的形式对其进行存储。Pivot 可以生成常规文本或 XML 格式的输出。如果是 XML 格式的输出,您不必指定 pivot 操作需要搜索的值域。
在这附上pivot in 多列,不固定列的动态实现方法
CREATE OR REPLACE PROCEDURE PIVOT_TEST IS
V_SQL VARCHAR2(2000);
CURSOR CURSOR_1 IS SELECT WM_CONCAT(''''|| ( SJWZ)||''''||'as '|| sjwz) SJWZ from (select distinct SJWZ from f_wz_lbmc where ckbh=2);
BEGIN
V_SQL := 'select * from (select sum(a.jhje) 金额 ,c.lbmc 类别名称 ,e.ksmc 科室名称,e.sjks 上级科室
from p_wz_ly02 a,d_wz_wpfl b,d_wz_lbmc c,p_wz_ly01 d,d_gy_ksdm e
where a.wpbh=b.wpbh
and b.lbbh=c.lbbh
and a.djbh