我有一个表格,我们记录了一个条目完成的时间。
使用日期条目,我想确定该记录发生在哪个班次。
1st shift 6am - 2pm
2nd shift 2pm - 10pm
3rd shift 10pm - 6am
希望看到如下结果。
| 测试迭代|完成日期|移位| shift |
| - -----|- -----|- -----| ------------ |
| 十二岁|2023年1月23日上午8:18:36|一个| 1 |
有什么想法或建议吗?
select order_num, test_iteration, complete_date
case shift
when ...
方向对吗?不知道什么是最好的方法
3条答案
按热度按时间m1m5dgzv1#
使用您所引用的
CASE EXPRESSION
将是最好的方法。| 测试迭代|完成日期|换档| SHIFT |
| - -----|- -----|- -----| ------------ |
| 十二岁|www.example.com|三个00.18.36.000000| 3 |
| 4| 23年1月23日08.59.36.000000|一个| 1 |
| 2| www.example.com|三个22.00.00.000000| 3 |
| 三个|www.example.com| 217.00.00.000000| 2 |
fiddle
编辑
这个表达式可以缩短为这个,只要你保持这个顺序:
yfjy0ee72#
我将向您展示SQL示例;
最后2排覆盖到12 AM和直到早晨
3gtaxfhh3#
您可以使用以下公式计算:
其中,对于样本数据:
输出:
| 测试迭代|完成日期|换档| SHIFT |
| - -----|- -----|- -----| ------------ |
| 十二岁|2023-01-23 08:18:36|一个| 1 |
| 一个|2019 -01-23 00:00:00|三个| 3 |
| 2| 2023-01-23 01:00:00|三个| 3 |
| 三个|2023-01-23 02:00:00|三个| 3 |
| 4| 2023-01-23 03:00:00|三个| 3 |
| 5个|2023-01-23 04:00:00|三个| 3 |
| 六|2023-01-23 05:00:00|三个| 3 |
| 七个|2023-01-23 06:00:00|一个| 1 |
| 八|2023-01-23 07:00:00|一个| 1 |
| 九个|2023-01-23 08:00:00|一个| 1 |
| 十个|2023-01-23 09:00:00|一个| 1 |
| 十一|2023-01-23 10:00:00|一个| 1 |
| 十二岁|2023-01-23 11:00:00|一个| 1 |
| 十三个|2023-01-23 12:00:00|一个| 1 |
| 十四|2023-01-23 13:00:00|一个| 1 |
| 十五|2023-01-23 14:00:00| 2| 2 |
| 十六|2023-01-23 15:00:00| 2| 2 |
| 十七岁|2023-01-23 16:00:00| 2| 2 |
| 十八岁|2023-01-23 17:00:00| 2| 2 |
| 十九|2023-01-23 18:00:00| 2| 2 |
| 二十个|2023-01-23 19:00:00| 2| 2 |
| 二十一|2023-01-23 20:00:00| 2| 2 |
| 二十二|2023-01-23 21:00:00| 2| 2 |
| 二十三|2023-01-23 22:00:00|三个| 3 |
| 二十四|2023-01-23 23:00:00|三个| 3 |
fiddle