2016-06-22 12 views
0

Ich habe eine Tabelle, die ich abfragen muss. Diese Tabelle enthält 4 Spalten, lasst uns ein "Datum", ein anderes "Preis A" und dann "Preis B" und "B Name" nennen. Also das sind meine Spaltenüberschriften, und natürlich jede Zeile hat ein Datum, Preis A und Preis B an diesem Datum und den entsprechenden Namen von B.Wie kann ich eine Unpivot-Abfrage schreiben?

Was ich tun möchte, ist jede Zeile zu einem Datum entsprechen - So wird beispielsweise Zeile 1 01.01.2016 sein und für jedes B eine eigene Spalte haben. So kann ich für jeden Termin die entsprechenden Preise der einzelnen B sehen. Leider mit meinen begrenzten SQL-Kenntnissen Ich weiß nicht, wie ich mit dieser Manipulation anfangen soll.

Want:

   B1  B2  B3  B4  A 
    01/06/2016: 1  5  6  6  3 
    02/06/2016: 1.5 5.2 6.1  6.3 3 

haben:

   Date Name B  Price B Price A 
     1/06/2016 B1   1   3 
     1/06/2016 B2   5   3 
     1/06/2016 B3   6   3 
     1/06/2016 B4   6   3 

Antwort

0

Sie könnten UNPIVOT mit PIVOT verwechseln. PIVOT transformiert Zeilen in Spalten, während UNPIVOT das Gegenteil tut.

Also mit einem PIVOT dann so etwas wie dies funktionieren könnte:

SELECT D, B1, B2, B3, B4, A 
FROM 
(
    SELECT TO_CHAR("Date",'DD/MM/YYYY')||':' as D, 
    "Name B" as Name, 
    "Price A" as A, 
    "Price B" as PriceB 
    FROM WHATIHAVE 
) 
PIVOT (MAX(PriceB) FOR Name IN (B1, B2, B3, B4)); 
Verwandte Themen