T-SQL Pivot - 有点像

时间:2014-12-02 15:56:11

标签: sql-server tsql

希望有人可以帮助我。 我有一个包含这样数据的表:

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_

我确定这是相对简单的,但我已经四处走动看着这个,现在每次尝试我最终都会返回一个与我开始时相同的列表!这几乎让我的脑子大吃一惊! 任何帮助将非常感激。 感谢。

1 个答案:

答案 0 :(得分: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 

或者如果您只有NULL_Data_这些数据集(即),请尝试此操作。

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

<强> SQL FIDDLE DEMO