Oracle SQL: Subquery Facto kombinert med PIVOT

stemmer
0

ved hjelp av subquery betraktning sammen med PIVOTresultater i

ORA-56901: non-constant expression is not allowed for pivot|unpivot values

Spørsmålet er (siden dette er akkurat hva jeg ønsker å gjøre): Er det mulig å bruke resultatene fra en tidligere spørring som pivot verdier?

Jeg fant denne ressource , der en inline setningen brukes sammen med XML, men jeg var ikke i stand til å finne ut hvordan å få det til å fungere (uten XMLsøkeord):

PIVOT (SUM(quantity) AS sum FOR (product_code) IN (SELECT DISTINCT product_code 
                                                            FROM   pivot_test
                                                            WHERE  id < 10));

Hva jeg har fått så langt:

WITH KEYS AS (
  SELECT DISTINCT
    PARTKEY
  FROM MYKEYTABLE
)

SELECT
  *
FROM
(
  SELECT ID, PARTKEY 
  FROM MYVALUETABLE
)
PIVOT
(   
  COUNT(PARTKEY)
  FOR (PARTKEY) IN (KEYS)
);

Ønsket resultat bør se f.eks lignende (som deler brukes for en bestemt ID)

ID  |PARTKEY1|PARTKEY2|PARTKEY3
____|________|________|________
123 |1       |0       |1
456 |0       |1       |1
Publisert på 12/01/2016 klokken 14:52
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Dokumentasjonen sier om dreie delspørringen syntaks:

En Delspørringen kun brukes sammen med XML-søkeordet. Når du angir en delspørring, er alle verdier funnet av delspørringen brukes til å svinge. Utgangen er ikke det samme kryss-tabellformat returneres ved hjelp av ikke-XML svingespørringer. I stedet for flere kolonner som er angitt i pivot_in_clause, produserer subquery en enkelt streng XML-kolonne.

Så du kan ikke bruke en delspørring med en ikke-XML pivot, fordi det ville skape et variabelt antall kolonner i resultatsettet, og som ikke er tillatt - antall kolonner må være kjent på parse-tiden. For XML-versjonen er det alltid et enkelt XMLType kolonnen slik at ikke utelukker variabelen IN-leddet du får fra en delspørring.

Svarte 12/01/2016 kl. 15:53
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more