0

我需要使用带有列变量的数据透视表或交叉表进行查询。有可能吗?我有下表:

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  

观察。我需要的行将通过连接来选择。所以我会有变量列的数量。

感谢帮助。

4

1 回答 1

0

您必须记住,SQL 计划程序需要在计划时知道返回行的粗略情况。所以你不能直接这样做。

第一个是您可以创建一个函数来执行您正在尝试执行的操作并在 refcursor 中返回结果。这可能是最简单的方法。使用crosstab()来自tablefunccontrib 模块/扩展的函数。您应该能够根据查询数据生成要运行的 SQL 查询,但这需要功能内动态 SQL,并且您必须再次返回一个引用。

于 2013-04-10T14:22:39.610 回答