【问题标题】:Count records by month starting with July to June从 7 月到 6 月按月统计记录
【发布时间】:2020-01-18 07:12:03
【问题描述】:

我们使用日历月 7 月 - 6 月,而不是 1 月 - 12 月。我有一个查询,按月计算每条记录,并将上个月的记录添加到新月份 Jan 到 Fab。有没有办法从 7 月份开始,将 7 月的计数添加到 8 月和 8 月到 10 月等等......

这里是查询:

SELECT ReviewType,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 1 THEN ReviewType END) AS Jan,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 2 THEN ReviewType END) AS Feb,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 3 THEN ReviewType END) AS Mar,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 4 THEN ReviewType END) AS Apr,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 5 THEN ReviewType END) AS May,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 6 THEN ReviewType END) AS Jun,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 7 THEN ReviewType END) AS Jul,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 8 THEN ReviewType END) AS Aug,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 9 THEN ReviewType END) AS Sep,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 10 THEN ReviewType END) AS Oct,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 11 THEN ReviewType END) AS Nov,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 12 THEN ReviewType END) AS Dec,
       COUNT(ReviewType) AS Result
FROM ALAN.dbo.qryPeakReviews 
WHERE fiscalYear = 1819
GROUP BY ReviewType;

这是输出:

ReviewType  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Result
1           0   17  46  57  67  72  72  72  83  87  93  94  94
2           0   2   22  27  31  34  34  37  43  48  48  48  48
3           0   1   16  28  34  37  37  39  45  47  49  49  49

【问题讨论】:

    标签: tsql


    【解决方案1】:

    将所有月份加 6,得到除以 12 的余数:

    SELECT ReviewType,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 = 1 THEN ReviewType END) AS Jul,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 2 THEN ReviewType END) AS Aug,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 3 THEN ReviewType END) AS Sep,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 4 THEN ReviewType END) AS Oct,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 5 THEN ReviewType END) AS Nov,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 6 THEN ReviewType END) AS Dec,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 7 THEN ReviewType END) AS Jan,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 8 THEN ReviewType END) AS Feb,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 9 THEN ReviewType END) AS Mar,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 10 THEN ReviewType END) AS Apr,
           COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 11 THEN ReviewType END) AS May,
           COUNT(ReviewType) AS Jun,
           COUNT(ReviewType) AS Result
    FROM ALAN.dbo.qryPeakReviews 
    WHERE fiscalYear = 1819
    GROUP BY ReviewType;
    

    我用BETWEEN 1 AND ... 更改了不等式检查,因为六月计算为0,不应包括在内。
    也没有理由为六月的最后一个月计算任何特别的东西。这是全年的总和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多