2017-07-19 32 views
0

早安ORACLE SQL查詢技巧。如何顯示一行? SQL

我有這樣

例如表

此表名爲 「注意」

id------alloc_code------Note_type-------Note 
1  AA    ss   hello 
2  AA    sc   good 
3  BB    ss   something 
4  BB    sc   anything 

我想顯示

alloc_code  Note_Type  Note  Note_Type  Note 
AA    SS   hello  SC   good 
BB    SS   something SC   Anything 

如何我可以這樣編碼嗎?

+0

您需要樞軸,但是你有固定數量的音符類型值嗎? –

+0

另外(除Alex的問題外):如果你有一個固定數量的紙幣類型,比如說兩個紙幣(在你的例子中紙幣類型是'ss'和'sc'),那麼這是你輸出的最佳格式?爲什麼不輸出三列,'alloc_code,note_of_type_ss,note_of_type_sc'? – mathguy

回答

1

您可以通過音符表做一個SELF JOIN和使用WHERE條款做這個篩選note_types SS和SC:

SELECT 
n1.alloc_code, 
'SS' AS Note_type, 
n1.Note, 
'SC' AS Note_type, 
n2.Note 
FROM note AS n1 
LEFT JOIN note AS n2 ON n1.alloc_code=n2.alloc_code 
WHERE n1.Note_type='ss' 
AND n2.Note_type='sc'; 
1

一種方法是有條件聚集:

select alloc_code, 
     'SS' as Note_Type, max(case when Note_Type = 'ss' then Note end) as ss_note, 
     'SC' as Note_Type, max(case when Note_Type = 'sc' then Note end) as sc_note 
from note n 
group by alloc_code;