【发布时间】:2015-09-16 14:27:16
【问题描述】:
我有一个查询,它基本上根据几个条件对当前月份的一列求和。我想获得每个月的价值,但似乎无法理解它。
DECLARE @d1 DATETIME = DATEADD(mm, DATEDIFF(mm, 0, GETDATE()),0);
DECLARE @d2 DATETIME = DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0);
SELECT sum(SUMCOL) as Total
FROM COVERAGE
where
(COVERAGE_START_DATE>=@d1 and COVERAGE_START_DATE< @d2 and not PROCESSED_DATE>=@d2) or
(COVERAGE_START_DATE< @d1 and PROCESSED_DATE>=@d1 and PROCESSED_DATE<@d2)
我只是想得到月份
SELECT MONTH(PROCESSED_DATE)MONTH, sum(SUMCOL) as Total
然后按月分组…………
GROUP BY MONTH(COVERAGE_START_DATE)
但后来意识到这不会,因为我也需要处理 PROCESSED_DATE 列并且也无法获取额外的逻辑。
无论如何,我希望能得到一些帮助。显然 SQL 查询不是我的事 :) 必须有一种更有效(和正确)的方法,但我似乎无法理解它。
【问题讨论】:
-
这将是一个很好的起点。 spaghettidba.com/2015/04/24/…
标签: sql sql-server database select