我需要使用带有列变量的数据透视表或交叉表进行查询。有可能吗? 我有下表:
Data_Id ! Description_Column | Value
--------+--------------------+-------
1 ! Column1 ! value1
1 ! Column2 ! value2
1 ! Column3 ! value3
1 ! Column4 ! value4
2 ! Column1 ! value5
2 ! Column2 ! value6
2 ! Column3 ! value7
2 ! Column4 ! value8
我需要得到
Data_Id ! Column1 ! Column2 ! Column3 ! Column4
1 ! value1 ! value2 ! value3 ! value4
2 ! value5 ! value6 ! value7 ! value8
但有时我会:
Data_Id ! Description_Column | Value
--------+--------------------+-------
3 ! Column1 ! value1
3 ! Column2 ! value2
4 ! Column1 ! value5
4 ! Column2 ! value6
我需要得到
Data_Id ! Column1 ! Column2
3 ! value1 ! value2
4 ! value5 ! value6
OB的。我需要的行将通过Join选择。所以我将拥有变量列的数量。
感谢您的帮助。
答案 0 :(得分:0)
您必须记住,SQL计划程序需要在计划时知道粗略的返回行是什么样的。所以你不能直接这样做。
首先,您可以创建一个执行您要执行的操作的函数,并在refcursor中返回结果。这可能是最简单的方法。使用crosstab()
contrib模块/扩展中的tablefunc
函数。您应该能够基于查询数据生成要运行的SQL查询,但这需要函数内动态SQL,并且您还必须返回一个refcursor。