这是我的第一个选择。将其命名为A
EMPLID DATE TIMEIN GRACEPERIOD NUMBER_OF_LATE
------ -------- ------ ----------- --------------
000001 1/1/2017 8:16 8:15 1
000001 1/2/2017 8:25 8:15 1
000001 1/3/2017 8:10 8:15 1
000002 1/1/2017 8:30 8:15 1
000002 1/2/2017 8:14 8:15 0
000002 1/3/2017 8:23 8:15 1
总和的结果应该是这样的:
EMPLID DATE NUMBER_OF_LATE
------ ------------------- --------------
000001 1/1/2017 - 1/3/2017 3
000002 1/1/2017 - 1/3/2017 2
我只想按EMPLID进行分组,并根据日期范围求和。
答案 0 :(得分:0)
这应该对你有用
select EMPLID, min(DATE) + ' - ' + max(DATE), sum(NUMBER_OF_LATE)
From t
group by EMPLID
根据您使用的DBMS,您可能需要使用函数将日期转换为所需的格式。
答案 1 :(得分:0)
以两种不同的方式更新了我的答案。你可以按照
分组设置条件 SELECT T1.EMPLID, MIN(CONVERT(DATETIME, T1.Date)) + ' ' + MAX(CONVERT(DATETIME, T1.Date)) AS DATARANGE,
SUM(NUmberOfLate) AS NUMBER_OF_LATE
FROM
(SELECT *
FROM AAA
WHERE Date BETWEEN CONVERT(datetime, '1/1/2017') AND CONVERT(datetime, '1/3/2018')
) T1
GROUP BY T1.EMPLID
SELECT EMPLID,
MIN(CONVERT(DATETIME, Date)) + ' ' + MAX(CONVERT(DATETIME, Date)) AS DATARANGE,
SUM(NUmberOfLate) AS NOF
FROM AAA
GROUP BY EMPLID