我有一张这样的桌子:
Employee Month ActDate
Emp 1 Feb 10/02/2019
Emp 1 Feb 15/02/2019
Emp 1 Mar 10/03/2019
Emp 2 Mar 09/03/2019
Emp 2 Apr 04/04/2019
Emp 2 Apr 05/04/2019
Emp 3 Feb 03/02/2019
Emp 4 Feb 06/02/2019
我需要使它看起来像这样
Employee Feb Mar Apr
Emp 1 10/02/2019 - 15/02/2019 10/03/2019
Emp 2 09/03/2019 04/04/2019 - 05/04/2019
Emp 3 03/02/2019
Emp 4 06/02/2019
我可以解决这个问题,但是例如Emp2在2月将有2行,我需要将同一员工的所有行连接起来,如何实现呢?
使用SQL Server 2008
谢谢
这是带有某些条件逻辑的聚合。这可能是最简单的两个聚合级别:
select employee,
(case when mon = 'Feb' then max(val) end) as Feb,
(case when mon = 'Mar' then max(val) end) as Mar,
(case when mon = 'Apr' then max(val) end) as Apr
from (select employee, mon,
(case when min(actdate) = max(actdate)
then convert(varchar(255), min(actdate))
else convert(varchar(255), min(actdate)) + ' - ' + convert(varchar(255), max(actdate))
end) as val
from t
group by employee, mon
) em
group by employee;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句