首页 > 解决方案 > 有没有按月和lineNum 重叠的求和函数?

问题描述

你能帮我吗。我有一张带有 pkid、linNum、dateStart、dateStop、month 的表。我需要通过 dateMonth 上的 lineNum 将不重叠的时间相加。第 10 个月和第 11 个月有多少 lineNum 1,2 ?

pkid  lineNum          dateStart                dateStop              dateMonth

1        1        2019-11-06 13:07:21.400     2019-11-06 14:07:21.400    2019-10-01

2        1        019-11-06 14:07:21.400     2019-11-06 18:07:21.400    2019-10-01

3        1        2019-11-06 11:07:21.400     2019-11-06 11:27:21.400    2019-10-01

4        1        2019-11-06 14:07:21.400     2019-11-06 19:07:21.400    2019-10-01

5        2        2019-11-06 10:07:21.400     2019-11-06 17:07:21.400    2019-10-01

6        2        2019-11-06 09:07:21.400     2019-11-06 17:07:21.400    2019-10-01

7        2        2019-11-06 07:07:21.400     2019-11-06 17:07:21.400    2019-10-01

8        1        2019-11-06 11:07:21.400     2019-11-06 17:07:21.400    2019-11-01

9        1        2019-11-06 17:07:21.400     2019-11-06 22:07:21.400    2019-11-01

10       1        2019-11-06 19:07:21.400     2019-11-06 23:07:21.400    2019-11-01

15       1        2019-11-06 19:07:21.400     2019-11-06 23:07:21.400    2019-11-02

标签: sql-server

解决方案


你应该SUM用 a 做 a GROUP BY

IE

SELECT SUM (lineNum) 
FROM table
GROUP BY dateMonth;

这应该给你一个2019-10-0110的结果

那就是说..您应该DATETIME像其他字段一样使用字段和格式YYYY-MM-DD HH:MM:SS,然后您可以MONTHWHERE子句中使用术语-

SELECT SUM (lineNum) 
FROM table
WHERE MONTH(dateMonth) = '10';

进一步说明..您可以选择月份和年份 - IE

SELECT SUM (lineNum) 
FROM table
WHERE MONTH(dateMonth) = '10'
AND YEAR(dateMonth) = '2019';

这是在 SQL Server 中处理日期的简单参考


推荐阅读