2014-09-06 16 views
0

我有一個MySQL輸入表,如下所示。主鍵由PID和MID組成。如何透視在MySQL或SSIS中不唯一的列?

PID | MID | VAL 
--------------- 
1 | 1 | 50 
1 | 2 | 51 
1 | 3 | 52 
1 | 4 | 53 
2 | 1 | 25 
2 | 2 | 26 
3 | 1 | 11 
3 | 1 | 12 
3 | 2 | 13 

我需要低於這個格式,在這裏你可以看到,50年代中期的固定數量都在列和所有可用的PID的是行。 PID應該是主鍵:

PID | MID1 | MID2 | MID3 | MID4 | MID5 | .... | MID50 
--------------------------------------------------------------- 
1 | 50 | 51 | 52 | 53 | ..(null).. 
2 | 25 | 26 |  ..(null).. 
3 | 12 | 13 |  ..(null).. 

關於SSIS:根據MSDN Pivot Article樞軸變換「由從一列轉動獨特值表達爲多列中的輸出旋轉的表值表達「所以我認爲這不適用於我的情況,因爲MID不是唯一的。

在SQL/MySQL我不是專家,所以我希望你能幫助我。我已經看到了MySQL Pivot查詢here,在我看來,它的方向是正確的,但無法使這個解決方案適應我的問題。

該解決方案可能是MySQL-Query或SSIS轉換。

回答

0

的東西在這些線路上

SELECT 
    pid, 
    MAX(CASE mid WHEN 1 THEN val ELSE NULL END) as MID1, 
    MAX(CASE mid WHEN 2 THEN val ELSE NULL END) as MID2, 
    MAX(CASE mid WHEN 3 THEN val ELSE NULL END) as MID3, 
    MAX(CASE mid WHEN 4 THEN val ELSE NULL END) as MID4, 
    MAX(CASE mid WHEN 5 THEN val ELSE NULL END) as MID5, 
    MAX(CASE mid WHEN 6 THEN val ELSE NULL END) as MID6 
FROM inputTable 
GROUP BY pid; 

DEMO