sql - 如何将日期划分为静态时段
问题描述
我有一个日期列,我必须将其分为两个已建立的组(组 A 和组 B),每组 14 天无限期地穿插。
例如,日期 '2021-04-09' 和 '2021-04-22' 对应Group A,日期 '2021-04-23' 和 '2021-05-06' 对应Group B, '2021-05-07' 和 '2021-05-20' 之间的日期对应于A 组,依此类推。
我想制作一个额外的列,它计算某个日期是在 A 组还是 B 组中。
CREATE TABLE dates (
date DATE
);
INSERT INTO dates VALUES ('2021-04-20');
INSERT INTO dates VALUES ('2021-04-21');
INSERT INTO dates VALUES ('2021-04-22');
INSERT INTO dates VALUES ('2021-04-23');
INSERT INTO dates VALUES ('2021-04-24');
INSERT INTO dates VALUES ('2021-04-25');
预期结果:
日期 | 团体 |
---|---|
2021-04-20 | A组 |
2021-04-21 | A组 |
2021-04-22 | A组 |
2021-04-23 | B组 |
2021-04-24 | B组 |
2021-04-25 | B组 |
抱歉,我第一次无法尝试提出问题。我能做的最好的就是静态地放置所有日期。我什至不知道它是否可以通过计算的方式完成。
select date,
CASE
WHEN (date between '2021-04-20' and '2021-04-22') THEN 'GROUP A'
WHEN (date between '2021-04-23' and '2021-04-25') THEN 'GROUP B'
ELSE 'UNKNOWN' END as group
from dates
解决方案
假设基准日期是2021-04-09
例子
Select *
,Grp = 'Group ' + char(65 + (datediff(day,'2021-04-09',date) / 14 ) % 2 )
From @dates
结果
date Grp
2021-04-20 Group A
2021-04-21 Group A
2021-04-22 Group A
2021-04-23 Group B
2021-04-24 Group B
2021-04-25 Group B
推荐阅读
- python - 尝试按其字段对 JSON 进行排序会引发 TypeError
- javascript - 为什么为我的 webpack 输出使用 .cjs 扩展名会抑制源映射的生成?
- javascript - 如何调用从 API 到 HTML 的 JSON 输出?
- javascript - discord.js 如何使从数组发送文本的 forEach 等待用户的回答(awaitmessages)?
- pine-script - Pine Script 获得特定日期的最高值
- node.js - 反应前端,节点后端CORS问题
- mongodb - 如何将一个值从一个数组复制到另一个字段然后弹出它?
- python - 如何重写以下内容以使其与模型管理器一起使用?
- javascript - Discord.js 踢/禁止命令顶级角色
- github - 通过 Github api v3 和 javascript 获取所有 github repo