2016-09-29 2 views
0

Ich habe diese (aufgrund meiner Abfrage):hinzufügen Abfrageergebnisse in Spalten SQL

id | suk | xpto 
    ----+------+------ 
    4 | 1023 | abc 
    4 | 1025 | def 
    4 | 1200 | zzz 
    4 | 1501 | ppp 
    5 | 1111 | ola 
    5 | 2222 | xau 

I verwandeln müssen in

id | suk | suk2 | suk3 | suk4 
    -----+----------+----------+----------+----------- 
    4 | 1023 abc | 1025 def | 1200 zzz | 1501 ppp 
    5 | 1111 ola | 2222 xau |   | 

Eigentlich meine Frage ist:

SELECT b.ID, s.SKU, s.EVENT_TYPE 
FROM VFIE_BONUS_POINTS_RULE b 
INNER JOIN VFIE_BONUS_POINTS_RULE_SKU s 
ON b.ID = s.ID_BNS_PTS_RL; 

Ich benutze Oracle.

Ist es möglich?

+0

Welche DBMS verwenden Sie? –

+0

Können Sie die Abfrage hinzufügen, die Sie derzeit haben? –

+0

Ich verwende den Oracle – Ricardo

Antwort

0

Verwenden Sie pivot und row_number(). Statt t setzen Sie Ihre Anfrage:

select * 
    from (select row_number() over (partition by id order by suk) rn, t.* from t) 
    pivot (max(suk||' '||xpto) suk for rn in (1, 2, 3, 4)) 

Test:

with t(id, suk, xpto) as (select 4, 1023, 'abc' from dual 
       union all select 4, 1025, 'def' from dual 
       union all select 4, 1200, 'zzz' from dual 
       union all select 4, 1501, 'ppp' from dual 
       union all select 5, 1111, 'ola' from dual 
       union all select 5, 2222, 'xau' from dual) 
select * 
    from (select row_number() over (partition by id order by suk) rn, t.* from t) 
    pivot (max(suk||' '||xpto) suk for rn in (1, 2, 3, 4)) 

Ausgang:

ID 1_SUK  2_SUK  3_SUK  4_SUK 
-- -------- -------- -------- -------- 
4 1023 abc 1025 def 1200 zzz 1501 ppp 
5 1111 ola 2222 xau 

Edit:

Wie kann ich den Spaltennamen von sku und xpto ändern? Erwartet: SUK 1 - XPTO 1

select id,"1_S" as "SUK 1", "1_X" as "XPTO 1", 
      "2_S" as "SUK 2", "2_X" as "XPTO 2", 
      "3_S" as "SUK 3", "3_X" as "XPTO 3", 
      "4_S" as "SUK 4", "4_X" as "XPTO 4" 
    from (select row_number() over (partition by id order by suk) rn, t.* from t) 
    pivot (max(suk) s, max(xpto) x for rn in (1, 2, 3, 4)) 

Weitere Informationen über pivot in Oracle documentation.

+0

Danke. Ich könnte mich an meinen Fall anpassen. – Ricardo

+0

Wie kann ich sku und xpto trennen? – Ricardo

+0

Pivot-Klausel ändern in: 'pivot (max (suk) suk, max (xpto) xpto für rn in (1, 2, 3, 4)) ' –

0

Wie kann ich einen neuen Spaltennamen ändern? Jetzt habe ich 1_Suk, 2_Suk, 3_Suk, und ich brauche das: Suk 1, Suk 2, Suk 3.

Verwandte Themen