【发布时间】:2016-12-02 04:34:55
【问题描述】:
我有一张这样的桌子:
ID ReceptionDate ResultFixedDateTime FinalMeasurementEndDateTime
----------------------------------------------------------------
1 2014-01-01 2014-01-01 10:20:35 2014-01-01 09:20:35
2 2014-01-01 2014-01-01 10:30:35 2014-01-01 09:40:35
3 2014-01-01 2014-01-01 10:50:35 2014-01-01 09:45:35
4 2014-01-02 2014-01-02 10:50:35 2014-01-02 09:45:35
5 2014-01-02 2014-01-02 10:50:35 2014-01-02 09:45:35
我需要一个类似下面的结果,按ReceptionDate 分组,具有相同ReceptionDate 的记录总数以及给定ReceptionDate 的最大时间差(ResultFixedDateTime - FinalMeasurementEndDateTime)
ReceptionDate Count OperatingDiff
--------------------------------------
2014-01-01 3 65
2014-01-02 2 65
此查询返回的记录数超出预期:
SELECT
ET.ReceptionDate,
COUNT(ET.ReceptionDate),
MAX(DATEDIFF(MINUTE, ET.ResultFixedDateTime, ET.FinalMeasurementEndDateTime)) AS OverTimeDiff
FROM
ExaminationTimes ET
WHERE
ET.ReceptionDate BETWEEN @StartDate AND @EndDate
GROUP BY
ET.ReceptionDate, ET.ResultFixedDateTime, ET.FinalMeasurementEndDateTime
ORDER BY
ET.ReceptionDate
当我取出时它返回正确数量的记录
MAX(DATEDIFF(MINUTE, ET.ResultFixedDateTime, ET.FinalMeasurementEndDateTime)) AS OverTimeDiff
这里有什么问题?
【问题讨论】:
-
MAX()不会影响返回的记录数。
标签: sql-server group-by sql-order-by aggregate-functions