2016-09-29 2 views
0

를 쿼리 결과를 추가난이 (내 쿼리의 결과)가 열 SQL

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

을 실제로

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

에 변환이 필요 내 쿼리는 다음과 같습니다

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; 

오라클을 사용합니다.

가능합니까?

+0

어떤 DBMS를 사용하고 있습니까? –

+0

현재 가지고있는 쿼리를 추가 할 수 있습니까? –

+0

내가 VFIE_BONUS_POINTS_RULE의 B 에서 오라클 – Ricardo

답변

0

pivotrow_number()을 사용하십시오.

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)) 

시험 :

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)) 

출력 :

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

편집 :

0,123,516 대신 t의 쿼리를 넣어

어떻게 sku 및 xpto의 열 이름을 변경할 수 있습니까? 예상 : 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)) 

더 자세한 정보에 대한 pivot 오라클 documentation인치

+0

고맙습니다. 나는 나의 사건에 적응할 수 있었다. – Ricardo

+0

sku와 xpto를 어떻게 분리 할 수 ​​있습니까? – Ricardo

+0

피벗 절을 다음과 같이 변경하십시오. 'pivot (max (suk) suk, max (xpto) rn for (1, 2, 3, 4)의 xpto)' –

0

어떻게 새 열 이름을 변경할 수 있습니까? 자, 1_Suk, 2_Suk, 3_Suk가 있는데, 나는 이것을 필요로한다 : 석 1, 석 2, 석 3.