2011-10-30 25 views
1

我不知道如何會從這個表中的SQLite寫查詢:顯示類值

image_id | feature_id | feature_val 
_________|____________|____________ 
    12  | 1  |  41 
    12  | 2  |  82 
    12  | 3  |  75 

    74  | 1  |  23 
    74  | 2  |  35 
    74  | 3  |  72 

返回的結果表:

image_id | feature_1_val | feature_2_val | feautre_3_val 
_________|_________________|_______________|_______________ 
    12  |  41  |  82  |  75 
    74  |  23  |  35  |  72  

我們可以假設圖像特徵的數量是恆定的,等於3. 我會非常感謝您的幫助。

回答

0

將行轉換爲列的過程稱爲pivoting。客戶端最好完成。例如,Microsoft Excel通過數據透視表提供了廣泛的支持。

但是在SQL中這不是不可能的。下面是一個使用max(case(招一個例子:

select image_id 
,  max(case when feature_id = 1 then feature_val end) as feature_1_val 
,  max(case when feature_id = 2 then feature_val end) as feature_2_val 
from YourTable 
group by 
     image_id 
+0

我非常相似的代碼,但沒有「最大」它沒有正常工作。非常感謝! :) – Konrad

0

鑑於該問題列出的約束,你可以創建一個不雅的,但可行的子查詢使用方法:

SELECT it.image_id, 
     (SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 1) AS feature_1_val, 
     (SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 2) AS feature_2_val, 
     (SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 3) AS feature_3_val 
    FROM ImageTable AS it 
    GROUP BY it.image_id