2016-09-19 74 views
1

我的表在我的數據庫是這樣的:SQL語句,讓我輸出多列作爲一個行

 
ID | VARIANT | SIFRANT | VALUE 

當我打電話

SELECT * FROM example_table 

我得到了自己的每一行。但是我的數據庫中的記錄可以有相同的VARIANT。我想將這些記錄輸出到同一行。 例如,如果我有

 
ID | VARIANT | SIFRANT | VALUE 
1 | 3  | 5  | 50 
2 | 3  | 6  | 49 
3 | 3  | 1  | 68 

我想輸出是

 
VARIANT | VALUES_5 | VALUES_6 | VALUES_1 
3  | 50  | 49  | 68 

編輯:我找到了解決辦法使用PIVOT,代碼是這樣的:

select * 
from (
    select variant, VALUE, SIFRANT 
    from example_table 
) 
pivot 
(
    max(VALUE) 
    for SIFRANT 
    in ('1','2','3','4','5','6','7','8','9','10') 
) 
+0

這個術語的總稱稱爲組連接 - 至少由MySQL的GROUP_CONTACT()函數進行......我並沒有真正使用Oracle,所以不確定equiv(在SQL Server中,這必須通過自定義邏輯來處理,沒有任何東西內置的,但該術語可能會給你至少一些方向) – jleach

+0

看到這裏:http://stackoverflow.com/questions/16771086/is-there-any-function-in-oracle-similar-to-group-concat-在MySQL的 – jleach

回答

4

看起來你只需要對你的數據進行彙總:

with test(ID, VARIANT, SIFRANT, VALUE) as 
(
    select 1, 3, 5, 50 from dual union all 
    select 2, 3, 6, 49 from dual union all 
    select 3, 3, 1, 68 from dual 
) 
select variant, listagg (value, ' ') within group (order by id) 
from test 
group by variant