gpt4 book ai didi

SQL查询按多个时间段分组

转载 作者:行者123 更新时间:2023-12-02 09:36:14 24 4
gpt4 key购买 nike

我有下表:

SalesDate smalldatetime,
ProductId varchar(20),
QuantitySold tinyint,
Price smallmoney

我想获取每种产品最近 1m、3m、1y 的销售总量。我如何在一个查询中做到这一点?到目前为止,我的尝试是运行三个单独的查询,每个时间段一个查询,然后使用 UNION 将它们组合起来。有没有更好的办法?我正在使用 MS SQL 2008。

最佳答案

您可以使用多列更轻松地执行此操作:

select productId,
sum(case when salesdate >= dateadd(month, -1, getdate()) then quantitysold else 0 end) as qs1m,
sum(case when salesdate >= dateadd(month, -3, getdate()) then quantitysold else 0 end) as qs3m
sum(case when salesdate >= dateadd(month, -12, getdate()) then quantitysold else 0 end) as qs12m
from table t
group by productId;

(注意:您可能至少希望从 getdate() 中删除时间,但您可能有一种完全不同的方式来获取“当前”日期。)

由于时间段重叠,因此使用列(和条件聚合)来完成此操作比为每个时间段使用单独的行更容易。

关于SQL查询按多个时间段分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26020274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com