2014-12-02 36 views
1

希望有人能幫助我。 我有這樣的數據表:T-SQL Pivot - 種類

Form Section Data1 Data2 Data3 Data4 
----------------------------------------- 
1001 0000001 Data_ Null_ Null_ Null_ 
1001 0000002 Null_ Data_ Null_ Null_ 
1001 0000003 Null_ Null_ Data_ Null_ 
1001 0000004 Null_ Null_ Null_ Data_ 
1002 0000001 Data_ Null_ Null_ Null_ 
1002 0000002 Null_ Data_ Null_ Null_ 
1002 0000003 Null_ Null_ Data_ Null_ 
1002 0000004 Null_ Null_ Null_ Data_ 

我想提出它在一個表像這樣:

Form Data1 Data2 Data3 Data4 
-------------------------------- 
1001 Data_ Data_ Data_ Data_ 
1002 Data_ Data_ Data_ Data_ 

我敢肯定,這是比較簡單的,但是我已經圓並且看着這個,現在每次嘗試我都會返回一個與我開始時相同的列表!這幾乎炸燬了我的大腦! 任何幫助將不勝感激。 謝謝。

+2

看起來你可以通過'Form'柱扔圍繞每個'Data'柱('max' /'min')和基團的聚合函數。 – Taryn 2014-12-02 15:59:53

回答

1

所有你需要的是conditional aggregate。考慮到這些都不是DB NULL's

SELECT Form, 
     Max(CASE 
      WHEN Data1 = 'Data_' THEN Data1 
      END), 
     Max(CASE 
      WHEN Data2 = 'Data_' THEN Data2 
      END), 
     Max(CASE 
      WHEN Data3 = 'Data_' THEN Data3 
      END), 
     Max(CASE 
      WHEN Data4 = 'Data_' THEN Data4 
      END) 
FROM <tablename> 
GROUP BY form 

,或者如果你只有這些數據集(IE)的唯一NULL_Data_那就試試這個。

select Form ,Min(Data1),Min(Data2),Min(Data3),Min(Data4) 
FROM <tablename> 
GROUP BY form 

SQL FIDDLE DEMO