【问题标题】:Count rows each month of a year - SQL Server计算一年中每个月的行数 - SQL Server
【发布时间】:2016-09-07 09:28:21
【问题描述】:

我有一个表格“Product”:

| ProductId  | ProductCatId | Price  |      Date    |   Deadline   |
--------------------------------------------------------------------
|     1      |      1       |  10.00 |   2016-01-01 |  2016-01-27  |
|     2      |      2       |  10.00 |   2016-02-01 |  2016-02-27  |
|     3      |      3       |  10.00 |   2016-03-01 |  2016-03-27  |
|     4      |      1       |  10.00 |   2016-04-01 |  2016-04-27  |
|     5      |      3       |  10.00 |   2016-05-01 |  2016-05-27  |
|     6      |      3       |  10.00 |   2016-06-01 |  2016-06-27  |   
|     7      |      1       |  20.00 |   2016-01-01 |  2016-01-27  |
|     8      |      2       |  30.00 |   2016-02-01 |  2016-02-27  |
|     9      |      1       |  40.00 |   2016-03-01 |  2016-03-27  |
|     10     |      4       |  15.00 |   2016-04-01 |  2016-04-27  |
|     11     |      1       |  25.00 |   2016-05-01 |  2016-05-27  |
|     12     |      5       |  55.00 |   2016-06-01 |  2016-06-27  |
|     13     |      5       |  55.00 |   2016-06-01 |  2016-01-27  |
|     14     |      5       |  55.00 |   2016-06-01 |  2016-02-27  |
|     15     |      5       |  55.00 |   2016-06-01 |  2016-03-27  |

我想在条件 Year = CurrentYear 的情况下每个月创建 Product 的 SP 计数行,例如:

| Month| SumProducts | SumExpiredProducts |
-------------------------------------------
|   1  |      3      |         3          |
|   2  |      3      |         3          |
|   3  |      3      |         3          |
|   4  |      2      |         2          |
|   5  |      2      |         2          |
|   6  |      2      |         2          |

我该怎么办?

【问题讨论】:

  • 不同年份呢?例如。日期 2017-01-01?
  • SumExpiredProducts 来自哪里?
  • 这是一个例子,并不代表。

标签: sql sql-server sql-server-2008 stored-procedures


【解决方案1】:

您可以使用如下查询:

SELECT MONTH([Date]), 
       COUNT(*) AS SumProducts ,
       COUNT(CASE WHEN [Date] > Deadline THEN 1 END) AS SumExpiredProducts 
FROM mytable
WHERE YEAR([Date]) = YEAR(GETDATE())
GROUP BY MONTH([Date])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多