首页 > 解决方案 > 在 varchar 上使用 sum 聚合函数

问题描述

我有一个查询,它检索两个 DateTime 列(TimeOut 和 TimeIn)之间的差异以及项目名称(ItemName):

 SELECT ItemName,CONVERT(nvarchar,(TimeOut- TimeIn), 108) AS TimeTaken FROM TimeTable 

这为我提供了所有值,例如我想要的值,但我想按 ItemName 对其进行分组,以便获得常见项目所用时间的总和。

我尝试这样做,但效果不佳。任何建议都会有所帮助,谢谢!

SELECT ItemName,sum(CONVERT(nvarchar,(TimeOut- TimeIn), 108)) AS TimeTaken FROM TimeTable group by ItemName

我无法对 varchar 求和,但我该怎么办?

我想要类似的东西:

    Pen       08:00
    Pencil    13:00
    Marker    53:00

代替:

    Pen       04:00
    Pencil    05:00
    Pen       04:00
    Marker    13:00
    Marker    40:00
    Pencil    08:00

标签: sqlsql-server

解决方案


使用DATEDIFF功能

SELECT ItemName,sum( DATEDIFF(SECOND, TimeOut, TimeIn)) AS TimeTaken FROM TimeTable group by ItemName

推荐阅读