2012-07-26 16 views
5

Zgodnie z dokumentacją Oracle, funkcja PIVOT nie obsługuje pod-zapytania w klauzuli "IN", ale jest możliwa w funkcji XML PIVOT. E.g.Alternatywna metoda dla PIVOT - IN z obsługą zapytań podrzędnych

SELECT * 
FROM table_name 
PIVOT 
(
    SUM(column_name_1) 
    FOR [column_name_2] IN (['Output_Column1'],['Output_Column2']) 
) 
AS aliasName 

Muszę zastąpić ['Output_Column1'],['Output_Column2'] za pomocą pod-zapytania.

Czy istnieje inna funkcja równoważna z PIVOT, w której możemy dostarczyć zapytanie podrzędne zamiast ciągłego kodowania wszystkich kolumn wyjściowych lub nawet samej funkcji PIVOT ?.

Odpowiedz

1

Nie, liczba kolumn musi być znana w czasie analizy. W przypadku PIVOT XML nie ma problemu, ponieważ takie zapytanie zwraca tylko jedną kolumnę.

+0

Dzięki Marcin. Ale czy istnieje odpowiednia funkcja, taka jak PIVOT i spełniające powyższe kryteria (przy użyciu sub-zapytania)? –

+2

@VijayKrish Mój komentarz dotyczył wszelkich zapytań SQL - nie można mieć zmiennej liczby kolumn, nie ma takiej opcji. Może wyjaśnij, co próbujesz osiągnąć. Dlaczego potrzebujesz czegoś takiego? –

+0

Mój stół składa się z następujących coulmnów. Person_id, status, itp. –

Powiązane problemy