Announcement

Collapse
No announcement yet.

11g: dynamisches Pivot möglich?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 11g: dynamisches Pivot möglich?

    Hallo Forum,

    seit Oracle 11g gibt es ja die neue Pivot Funktion. Beispiel: Eine Liste der Belegung der einzelnen Liefertore pro Abrechungsjahr:

    [highlight=sql]
    With "Quelldaten" AS (
    Select
    tab."TorNr",
    Substr(tab."Datum", 1, 4) AS "Jahr"
    From
    tabelle tab
    Where
    Substr(tab."Datum", 1, 4) >= '2005'
    )

    SELECT * FROM "Quelldaten"
    Pivot ( Count("TorNr")
    FOR "Jahr"
    IN (2005,2006,2007,2008,2009,2010,2011,2012,2013)
    )

    ORDER BY "TorNr"
    [/highlight]

    In der "IN" Klausel trage ich händisch die gewünschten Spalten ein. Geht sowas auch dynamisch? Wenn z.B. das Jahr 2008 und 2011 fehlen würden, diese nicht erscheinen?

    Danke,
    Yusuf

  • #2
    Meines Wissens nach geht ein dynamisches PIVOT nur in der XML-Variante:
    Code:
    SELECT ...
    FROM   ...
    PIVOT XML
       ( pivot_clause
         pivot_for_clause
         pivot_in_clause )
    WHERE  ..
    Ein Beispiel dafür hier.

    Comment


    • #3
      Stimmt Du hast recht, bei XML kann man in der "IN" Klausel "any" verwenden. Gibt es eine Möglichkeit aus dem XML Output wieder "normal" zu machen? Weil ich den XML Output so nicht weiter reichen kann.

      Comment


      • #4
        Originally posted by Wursel View Post
        Gibt es eine Möglichkeit aus dem XML Output wieder "normal" zu machen?
        http://psoug.org/reference/xml_functions.html
        Gruß, defo

        Comment

        Working...
        X