Anda tidak dapat menempatkan pernyataan dinamis dalam pernyataan IN PIVOT tanpa menggunakan XML PIVOT, yang menghasilkan beberapa keluaran yang kurang diinginkan. Namun, Anda dapat membuat string IN dan memasukkannya ke dalam pernyataan Anda.
Pertama, ini contoh tabel saya;
myNumber myValue myLetter
---------- ---------- --------
1 2 A
1 4 B
2 6 C
2 8 A
2 10 B
3 12 C
3 14 A
Pertama-tama siapkan string untuk digunakan dalam pernyataan IN Anda. Di sini Anda memasukkan string ke "str_in_statement". Kami menggunakan COLUMN NEW_VALUE dan LISTAGG untuk menyiapkan string.
clear columns
COLUMN temp_in_statement new_value str_in_statement
SELECT DISTINCT
LISTAGG('''' || myLetter || ''' AS ' || myLetter,',')
WITHIN GROUP (ORDER BY myLetter) AS temp_in_statement
FROM (SELECT DISTINCT myLetter FROM myTable);
String Anda akan terlihat seperti:
'A' AS A,'B' AS B,'C' AS C
Sekarang gunakan pernyataan String dalam kueri PIVOT Anda.
SELECT * FROM
(SELECT myNumber, myLetter, myValue FROM myTable)
PIVOT (Sum(myValue) AS val FOR myLetter IN (&str_in_statement));
Berikut Outputnya:
MYNUMBER A_VAL B_VAL C_VAL
---------- ---------- ---------- ----------
1 2 4
2 8 10 6
3 14 12
Namun ada batasannya. Anda hanya dapat menggabungkan string hingga 4000 byte.