希望有人可以帮助我。 我有一个包含这样数据的表:
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_
我确定这是相对简单的,但我已经四处走动看着这个,现在每次尝试我最终都会返回一个与我开始时相同的列表!这几乎让我的脑子大吃一惊! 任何帮助将非常感激。 感谢。
答案 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 强>