2013-09-28 49 views
1

我正在使用允許用戶創建自己的字段的系統。這在Oracle中作爲字段表和字段/值表實現。如果我運行這樣的查詢:將字段名稱/值行作爲單行查詢

SELECT 
    field_name, field_value 
FROM field_t 
INNER JOIN field_t ON field_t.id = field_string_t.field_id 
WHERE (field_name = 'foo' 
    OR field_name = 'bar' 
    OR field_name = 'buzz' 
) 

然後我可以得到的字段名稱/值對的一系列行:

id  field_name field_value 
8  foo   1 
8  bar   5 
8  buzz   4 
... and so on for each id 

我如何編寫一個查詢,而不是返回此:

id  foo  bar  buzz 
8  1  5  4 

謝謝。

+3

這就是所謂的*旋轉* - 例如見。 http://stackoverflow.com/questions/17116354/oracle-pivot-converting-values-into-columns –

回答

1

正如馬克·班尼斯特建議您可以使用旋轉功能做同樣的

如果你想使用一個子查詢,而不是值的FIELD_NAME使用PIVOT XML(請注意,結果將是XML在這情況)

欲瞭解更多信息,請查看以下鏈接

PIVOT and UNPIVOT operators in Oracle 11g

select * from 
(
SELECT id, field_name, field_value,field_id 
FROM field_t) 
PIVOT (
MAX(field_value) 
FOR (field_name) IN ('foo' as foo, 'bar' AS bar, 'buzz' as buzz)) 
WHERE id=field_id; 
相關問題