sql - 特定时间的销售 - 长期
问题描述
我需要查询,它只计算长期特定时间内的销售额,按天分组。现在,我正在使用 or 并且输出对我来说很好,但我想要一个月,所以这根本不是解决方案。当然,在 excel 中使用 conactenate 准备长期“或”很容易,但是 - 如果可能的话 - 我希望在一两个条件下使用它,而我只需要操作数据范围。
select format(sale_date_time, 'dd/MM'), sum(sale)
from dbo.Sales
where sale_date_time between '2018-10-29 06:00' and '2018-10-29 10:00' or
sale_date_time between '2018-10-30 06:00' and '2018-10-30 10:00'
group by format(sale_date_time, 'dd/MM')
解决方案
假设我理解这个问题 - 您可以在列的日期和时间部分使用单独的条件sale_date_time
:
select format(sale_date_time, 'dd/MM'), sum(sale)
from dbo.Sales
where sale_date_time >= '2018-10-01 00:00'
and sale_date_time < '2018-11-01 00:00' -- all of October
and CAST(sale_date_time as time) >= '06:00:00'
and CAST(sale_date_time as time) <= '10:00:00'
group by format(sale_date_time, 'dd/MM')
请注意,通过强制转换sale_date_time
为time
您会阻止 SQL Server 使用可能与此列相关的任何索引 - 因此更好的选择可能是将销售日期和时间存储在两个不同的列中 - 一个用于date
,一个用于time
.
推荐阅读
- php - 如何在laravel中找到我的表中剩余字段的值大于零的行
- recursion - TBS小而强:如何递归填充数据
- android - 如何使用recyclerview设置动画drawable?
- c++ - 矩形矩阵的 SIMD 矩阵乘法
- zsh - 我的 .zshrc 抛出 VCS_INFO_set:12: bad math expression: invalid character: {
- c# - 在 C# 中,如何处理具有多个线程/任务但有条件的大型文本文件?
- c++ - 如何使指针成员数据的常数随父实例的常数变化?
- mongodb - 本地与远程数据库的 Mongo DB BI 连接器
- r - 如何将训练数据中的中值估算为 R 中的测试数据?
- typescript - 在 CI/CD 管道上使用 docker 镜像和 CircleCI