2017-12-20 18 views
0

Ich habe eine Tabelle, wie untenKreuz Tab PIVOT Abfrage in Oracle 11G

CODE  PH_NUMBER  SUM(S.DURATION) MIN(T.START_TIME) CAMPAIGN 
35039663 9250993319 120    19-Dec-17   297 
35039725 917050139125 50    19-Dec-17   68 
35039725 917050139125 370    19-Dec-17   297 
35039726 919470833038 3370    19-Dec-17   68 
35039726 919470833038 390    19-Dec-17   297 

, was ich brauche, ist

code  Ph_number  sum(duration) Min(start_time) 297_count 68_count 
35039663 9250993319 120    19-Dec-17   1  0 
35039725 917050139125 50+370   19-Dec-17   1  1 
35039726 919470833038 3370+390  19-Dec-17   1  1 

, wie dies in Oracle 11G zu erreichen? Dank

+2

Haben Sie eine feste Liste der Kampagnen haben, oder zumindest diejenigen, die Sie sehen wollen, und damit eine feste Anzahl von Spalten in der Ergebnismenge? Ich rate nicht, in welcher Sorge Sie sich dynamisches SQL anschauen. Oder lassen Sie sie einer Berichtsebene zuweisen, wenn Sie eine haben. –

Antwort

0

Schnell dies durch die Ladung von sum mit decode (keine Notwendigkeit pivot Klausel zu verwenden) verwenden:

select code, ph_number, 
    sum(duration) "Total Duration", 
    min(to_char(start_time,'dd-Mon-yy')) "Min Start Time", 
    sum(decode(campaign,297,1,0)) "297_count", 
    sum(decode(campaign,68,1,0)) "68_count" 
    from mytable 
group by code, ph_number 
order by code; 

By the way, gibt es kein Problem Spalte zu verwenden ph_number in group by Ausdruck, da sein Werte wiederholen sich für einzelne Spalten code.

D e m o

+0

Danke, es funktioniert gut. – Dnyati

+0

@Dnyati du bist willkommen. –