首页 > 解决方案 > datediffs 的不同计数不是那么明显

问题描述

我希望返回单个 ID 的计数和自创建记录以来的分钟数。

我有这个作为查询:

SELECT DISTINCT
  batchid AS 'ID'
, COUNT(batchid) AS 'Count'
, DATEDIFF (MINUTE,CONVERT(char(10),MIN([createdOn]), 108),CONVERT(char(10),GETDATE(), 108))
FROM [UpdateRecords]
WHERE [status] = 'Pending'
GROUP BY batchId,createdOn
ORDER BY batchId

它返回 ID、计数和分钟。

ID 计数分钟
171836 1 28
171836 4 28
171836 10 28
171836 21 28

问题就出现了,同一个ID会出现多次。加在一起时,该 ID 的计数是准确的。

我想要一个不同的计数,按 ID 以及分钟数

ID 计数分钟 171836 36 28

我如何使用分钟来做到这一点?这可以显示小时和分钟吗?

标签: sqlsql-servertsql

解决方案


您需要按 Select 中的相同项目分组:

SELECT 
batchid AS 'ID'
, COUNT(batchid) AS 'Count'
, DATEDIFF (MINUTE,CONVERT(char(10),MIN([createdOn]), 108),CONVERT(char(10),GETDATE(), 108))
FROM [UpdateRecords]
WHERE [status] = 'Pending'
GROUP BY batchId, DATEDIFF (MINUTE,CONVERT(char(10),MIN([createdOn]), 108),CONVERT(char(10),GETDATE(), 108))
ORDER BY batchId

推荐阅读