2015-10-19 67 views
1

前幾天我問過類似的問題。Oracle的sql pivot類型按

我有含材料類型的表:

id type mat_number description  count 
------------------------------------------------  
a mat_1 123456  wood type a  5 
a mat_2 333333  plastic type a  8 
b mat_1 654321  wood type b  7 
c mat_2 444444  plastic type c 11 
d mat_1 121212  wood type z  8 
d mat_2 444444  plastic type c  2 
d mat_2 555555  plastic type d  3 

與SQL我想創建列表如下:

id mat_1  description  count mat_2  description count 
------------------------------------------------------------------- 
a 123456 wood type a  5  333333 plastic type c 8 
b 654321 wood type b  7  null 
c null        444444 plastic type c 11 
d 121212 plastic type c 8  444444 plastic type c 2 
d null        555555 plastic type c 3 

那是可能的支點?

+1

雖然不是一個完整的答案,http://stackoverflow.com/questions/32828265/rows-to-column-in-oracle#32828478與代碼類似的問題,可能是能夠幫助 –

+0

在哪裏問題?你試過什麼了? – lad2025

回答

1

沒有,但你可以用做自連接

select a.id aId, a.mat_number mat1, a.description aDescrip, a.count aCount, 
       b.mat_number mat2, b.description aDescrip, b.count bCount 
From table a 
    full join table b 
     on b.id = a.id 
      and a.type = mat_1 
      and b.type = mat_2 
1

一個人並不需要用「支點」在查詢中實現想要的轉型。幾個簡單的案例表達式和一組可以做奇蹟。

select 
     id 
    , max(case when type = 'mat_1' then MAT_NUMBER end) as mat_1  
    , max(case when type = 'mat_1' then DESCRIPTION end) as description_1 
    , max(case when type = 'mat_1' then COUNT end) as count_1 
    , max(case when type = 'mat_2' then MAT_NUMBER end) as mat_2 
    , max(case when type = 'mat_2' then DESCRIPTION end) as description_2 
    , max(case when type = 'mat_2' then COUNT end) as count_2 
from table1 
group by 
     id 
order by 
     id 
;