SQL Server:案例语句,在两个日期之间
我有一组时间序列日期,我需要能够按日期范围汇总。问题是日期范围不是固定的,它会更改一个月。我事先知道几个月,所以这不是问题。我很难将自己的头缠绕如何将开始日期和结束日期与选择范围匹配。我可能很快就想出了一种古怪的方法,但我想寻求帮助。我的点头正在煮熟。
哦,我可以手动写它,但这没什么好玩,也不灵活。
这是我的手动方法。
SELECT
[DateTime], [KWH],
CASE
WHEN DateTime >= '2022-01-20' AND DateTime < '2022-02-21'
THEN '2022-02'
WHEN DateTime >= '2022-02-21' AND DateTime < '2022-03-21'
THEN '2022-03'
WHEN DateTime >= '2022-03-21' AND DateTime < '2022-04-20'
THEN '2022-04'
WHEN DateTime >= '2022-04-20' AND DateTime < '2022-05-20'
THEN '2022-05'
WHEN DateTime >= '2022-05-20' AND DateTime < '2022-06-20'
THEN '2022-06'
WHEN DateTime >= '2022-06-20' AND DateTime < '2022-07-21'
THEN '2022-07'
WHEN DateTime >= '2022-07-21' AND DateTime < '2022-08-22'
THEN '2022-08'
WHEN DateTime >= '2022-08-22' AND DateTime < '2022-09-20'
THEN '2022-09'
WHEN DateTime >= '2022-09-20' AND DateTime < '2022-10-20'
THEN '2022-10'
WHEN DateTime >= '2022-10-20' AND DateTime < '2022-11-20'
THEN '2022-11'
WHEN DateTime >= '2022-11-20' AND DateTime < '2022-12-20'
THEN '2022-12'
WHEN DateTime >= '2022-12-20' AND DateTime < '2023-01-20'
THEN '2023-01'
ELSE 'NG'
END AS [c_Month]
FROM
[MV90].[dbo].[someplace]
这是我想匹配和吐出bmonth之间的中间周期。
谢谢你。
I have a set of time series dates that I need to be able to sum by a date range. The problem is the date range isn't fixed, it changes a little month to month. I know the months beforehand so that's not a problem. I'm having a hard time wrapping my head around how to match the start date and end date to the select range. I might come up with a quirky method soon but I want to ask for help. My noddle is cooked right now.
Oh, and I can write it manually, but that's no fun and not flexible.
Here is my manually method.
SELECT
[DateTime], [KWH],
CASE
WHEN DateTime >= '2022-01-20' AND DateTime < '2022-02-21'
THEN '2022-02'
WHEN DateTime >= '2022-02-21' AND DateTime < '2022-03-21'
THEN '2022-03'
WHEN DateTime >= '2022-03-21' AND DateTime < '2022-04-20'
THEN '2022-04'
WHEN DateTime >= '2022-04-20' AND DateTime < '2022-05-20'
THEN '2022-05'
WHEN DateTime >= '2022-05-20' AND DateTime < '2022-06-20'
THEN '2022-06'
WHEN DateTime >= '2022-06-20' AND DateTime < '2022-07-21'
THEN '2022-07'
WHEN DateTime >= '2022-07-21' AND DateTime < '2022-08-22'
THEN '2022-08'
WHEN DateTime >= '2022-08-22' AND DateTime < '2022-09-20'
THEN '2022-09'
WHEN DateTime >= '2022-09-20' AND DateTime < '2022-10-20'
THEN '2022-10'
WHEN DateTime >= '2022-10-20' AND DateTime < '2022-11-20'
THEN '2022-11'
WHEN DateTime >= '2022-11-20' AND DateTime < '2022-12-20'
THEN '2022-12'
WHEN DateTime >= '2022-12-20' AND DateTime < '2023-01-20'
THEN '2023-01'
ELSE 'NG'
END AS [c_Month]
FROM
[MV90].[dbo].[someplace]
This is the in-between periods I want to match between and spit out bMonth.
Thank you a bunch.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试此操作:
BED0B0B0EBA1
格式
,绝对很糟糕( ref 3 )。dateTime
是一个糟糕的列名选择,因为它含糊不清,并且因为它与数据类型的名称相撞。You can try this one:
Notes:
FORMAT
, it's absolutely awful (ref 1, ref 2, ref 3).DateTime
is a poor column name choice both because it is vague and because it collides with the name of a data type.