首页 > 解决方案 > SQL - 非空值分组

问题描述

需要帮助提出 SQL 查询。具体来说,展平成单行。

表列:

Unit, StartDate, MoveDate, NextDate, AfterDate, IncidentId 

数据行

E11, 1/1/2010, null, null, null, F1
E11, null, 1/1/2011, null, null, F1
E11, null, null, 1/1/2012, null, F1
E12, 1/1/2011, null, null, null, F1
E12, null, 1/2/2013, null, null, F1

我的目标是:

E11, 1/1/2010, 1/1/2011, 1/1/2012, null, F1
E12 1/1/2011, 1/2/2013, null, null, F1 

我认为一个简单的 Group By 会起作用:

SELECT Unit, StartDate, MoveDate, NextDate, AfterDate, IncidentId 
FROM UnitTable
WHERE IncidentID = 'F1' 
GROUP BY Unit, StartDate, MoveDate, NextDate, AfterDate, IncidentId 

但当然我得到的一切都不在 1 线上。

我认为它应该是一个简单的 SQL 但无法弄清楚

标签: sql

解决方案


你可以使用这个:

SELECT Unit, max(StartDate) StartDate, max(MoveDate) MoveDate, Max(NextDate) NextDate, Max(AfterDate) AfterDate, Max(IncidentId) IncidentId
FROM UnitTable
WHERE IncidentID = 'F1' 
GROUP BY Unit, StartDate, MoveDate, NextDate, AfterDate, IncidentId 

推荐阅读