...枢轴((X)中B的总和(A))
现在,B的数据类型为varchar2,X为一串由逗号分隔的varchar2值。
X的值是从同一表的列(例如CL)中选择不同的值。这种枢轴查询工作的方式。
但是问题是,每当CL列中有一个新值时,我都必须手动将其添加到字符串X中。
我尝试用从CL中选择不同的值替换X。但是查询未运行。
我感觉到的原因是因为要替换X,我们需要用逗号分隔的值。
然后,我创建了一个函数以返回确切的输出以与字符串X匹配。但是查询仍然无法运行。
显示的错误消息类似“缺少righr异常状态”,“文件通信通道结束”等。
我尝试使用数据透视xml而不是仅数据透视,查询运行但给出了诸如oraxxx之类的vlaues,但根本没有任何值。
也许我没有正确使用它。
你能告诉我一些方法来创建具有动态值的枢轴吗?
你不能将非常量字符串放在IN
ivot子句的子句中。
你可以为此使用数据透视XML。
从文档:
子查询子查询仅与XML关键字一起使用。当你指定子查询时,该子查询找到的所有值都将用于透视
它看起来应该像这样:
select xmlserialize(content t.B_XML) from t_aa
pivot xml(
sum(A) for B in(any)
) t;
你还可以使用子查询代替ANY
关键字:
select xmlserialize(content t.B_XML) from t_aa
pivot xml(
sum(A) for B in (select cl from t_bb)
) t;
您好您的方法实际上正在工作,但输出我正在以xml格式。我可以将输出作为具有行和列的表格输出吗?
AFAIK,不是动态的...但是,您打算如何使用不知道其结构的结果?