2017-07-14 69 views
0

我要代表一列數據如錶行另一個表的信息如何實現透視財產(或輸出)...用mysql基礎上,可動態更新

我有3個輸入表..

   Person 

    Id | Name | age | Country 
----- | :----: | :----: | :-----: 
    1 | anil | 20 | India 
    2 | Raggu | 21 | India 
    3 | IRSHAD| 22 | India 
    4 | Sravas| 20 | India 
    5 | . | . | . 
    6 | . | . | . 
    7 | . | . | . 

   Test 

    Id | Name | description 
----- | :----: | :-------------: 
    1 | Height | Height of a person in feets 
    2 | Weight | Weight of a person in kgs 
    3 | Fat  | Fat of a person in calories 
    4 | .  |  . 
    5 | .  |  . 
    6 | .  |  . 
    7 | .  |  . 

   Gim 

Person_Id | Test_Id | value 
--------- | :----: | :----: 
    1   |  1 | 6 
    2   |  3 | 120 
    1   |  2 | 60 
    4   |  1 | 5.8  
    6   |  . | .  
    7   |  . | . 

我需要缺貨表作爲

   Gim_Result 

    Name | Height| Weight | Fat |.... 
:----: | :----: | :-----:|:-----: | 
    anil | 6 | 60 | null | ..... 
    Raggu | null | null | 120 | ..... 
    IRSHAD| null | null | null | .... 
    Sravas| 5.8 | null | null | .... 
    . | . | . | . | ..... 
    . | . | . | . | ..... 
    . | . | . | . | ..... 

我需要一個查詢,使得它會產生導致上述表 如圖我它動態產生在結果表的新列在測試表中的每個不同的測試

我認爲,我們可以在SQL Server

使用旋轉產生這種結果的,但我需要用mysql產生這種結果......

+0

可能重複的[MySQL數據透視表](https://stackoverflow.com/questions/7674786/mysql-pivot-table) – Pred

+0

在我的情況下,我不知道什麼字段退出測試表和新的測試時添加在測試表中,我的靜態查詢自動生成輸出表,新測試也是列。 –

回答

1

基本原理如下:

SELECT 
    EntityID 
    , SUM(CASE WHEN PivotColumn = 'PivotColumnValue1' THEN PivotValue ELSE NULL END) 
    , SUM(CASE WHEN PivotColumn = 'PivotColumnValue2' THEN PivotValue ELSE NULL END) 
    /* ... */ 
    , SUM(CASE WHEN PivotColumn = 'PivotColumnValueN' THEN PivotValue ELSE NULL END) 
FROM 
    MyTable 
GROUP BY 
    EntityID 
; 

您當然可以使用您選擇的任何聚合函數。

+0

在我的情況下,我不知道什麼字段退出測試表,當新的測試添加在測試表中我的查詢自動生成輸出表與新的測試列 –

+0

SQL服務器沒有動態數據透視解決方案。如果你想實現它,你將不得不使用動態SQL。 – Pred

+0

感謝您的支持...... –