2014-03-07 55 views
0

我有下表,它實際上是多個連接表結果的最小示例。我現在想按'person_ID'進行分組,並將所有'值'條目放在一行中,按照feature_ID排序。SQL group by one column,sort by another and transponse a third

person_ID | feature_ID | value 
123  | 1   | 1.1 
123  | 2   | 1.2 
123  | 3   | 1.3 
123  | 4   | 1.2 
124  | 1   | 1.0 
124  | 2   | 1.1 
... 

結果應該是:

123 | 1.1 | 1.2 | 1.3 | 1.2 
124 | 1.0 | 1.1 | ... 

應該有一個優雅的SQL查詢解決方案,我既不能拿出,也沒有找到它。

對於快速重建,這將是該示例數據:

create table example(person_ID integer, feature_ID integer, value float); 
insert into example(person_ID, feature_ID, value) values 
    (123,1,1.1), 
    (123,2,1.2), 
    (123,3,1.3), 
    (123,4,1.2), 
    (124,1,1.0), 
    (124,2,1.1), 
    (124,3,1.2), 
    (124,4,1.4); 

編輯:每個人都有在現實生活中的應用6374項。

我正在使用PostgreSQL 8.3.23數據庫,但我認爲這應該可以用標準SQL解決。

+1

是對列值從'1 feature_ID'固定爲4? – TechDo

+0

如果你的意思是每個人在這張表中的行數都是相同的,那麼是的。雖然在現實生活中它從0到6373。 – Exocom

回答

0

數據庫在轉置時並不多。手頭有一個模糊的列增長問題,我的意思是數據庫如何處理可變數量的列?這不是電子表格。

這種排序的轉換通常在報表編寫器中完成,而不是在SQL中完成。

...或在一個程序,如在PHP中。在SQL僅由程序