如果不使用PivotXML,则不能将动态语句放入Pivot的IN语句中,而后者输出的输出不太理想。但是,您可以创建一个IN字符串并将其输入到您的语句中。
首先,这是我的样本表;myNumber myValue myLetter---------- ---------- --------
1 2 A
1 4 B
2 6 C
2 8 A
2 10 B
3 12 C
3 14 A
首先设置要在IN语句中使用的字符串。在这里,您将字符串放入“str_in_START”中。我们用列新值和LISTAGG来设置字符串。clear columnsCOLUMN temp_in_statement new_value str_in_statementSELECT DISTINCT
LISTAGG('''' || myLetter || ''' AS ' || myLetter,',')
WITHIN GROUP (ORDER BY myLetter) AS temp_in_statement
FROM (SELECT DISTINCT myLetter FROM myTable);
您的字符串看起来如下:'A' AS A,'B' AS B,'C' AS C
现在,在透视查询中使用String语句。SELECT * FROM
(SELECT myNumber, myLetter, myValue FROM myTable)
PIVOT (Sum(myValue) AS val FOR myLetter IN (&str_in_statement));
这是输出:MYNUMBER A_VAL B_VAL C_VAL---------- ---------- ---------- ----------
1 2 4
2 8 10 6
3 14 12
但也有局限性。您只能连接最多4000字节的字符串。