【问题标题】:COUNT records in RANGE GROUP BY dateRANGE GROUP BY 日期中的 COUNT 条记录
【发布时间】:2011-04-29 07:06:57
【问题描述】:

我有一个销售表,其中显示了每次销售的日期和时间。

例如:

saleid |销售日期 |销售时间
1 | 20110327 | 101
2 | 20110327 | 102
3 | 20110328 | 201

(所以销售 2 发生在 20110327 的 102)

我需要构造一条 SQL 语句:
按日期对销售进行分组(每行是不同的日期),然后
计算每个时间范围的销售额。 (每个时间范围都是一个单独的列)

表格应如下所示:

销售日期 | 101-159 | 200-259 |
20110327 | 2 | 0 |
20110328 | 0 | 1 |

它必须是单个语句,并且 saledate 和 saletime 需要保持为数字格式。
(我从一个有几百万行的数据库表中提取)

我正在使用 MS Access

非常感谢任何建议。

非常感谢!

【问题讨论】:

  • 我距离 MS 访问太久了,无法完全回答这个问题,但作为提示,请研究数据透视查询。

标签: sql ms-access count group-by


【解决方案1】:
SELECT saledate,
SUM(IIF(saletime >= 101 and saletime <= 159), 1, 0) as [101To159)
SUM(IIF(saletime >= 200 and saletime <= 259), 1, 0) as [200To259)
FROM myTable
GROUP BY saledate

注意:我没有运行此查询。但是,这可能是这样的。

【讨论】:

  • 这不就是 Partition() 函数的用途吗?
【解决方案2】:
SELECT saledate,
SUM(case when saletime between 101 and 159 then 1 else 0 end ) as R101_159,
SUM(case when saletime between 200 and 259 then 1 else 0 end ) as R200_59
FROM myTable
GROUP BY saledate

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多