我正在寻找一种方法来过滤掉MS SQL查询中某个范围内的数据。在本例中,“Test2”是我的起点,“Test4”是我的终点。我想过滤掉“Test1”,只要它在“Test2”和“Test4”行之间。如果它在外面,那么我想留着它。我还想把“测试3”排成一行。
实际结果:
DateTime|消息
2022-09-09 00:00|测试1
2022-09-09 01:00|测试2
2022-09-09 02:00|测试1
2022-09-09 03:00|测试1
2022-09-09 04:00|测试3
2022-09-09 05:00|测试4
预期结果:
DateTime|消息
2022-09-09 00:00|测试1
2022-09-09 01:00|测试2
2022-09-09 04:00|测试3
2022-09-09 05:00|测试4
第二个例子
实际结果:
DateTime|消息
2022-09-08 11:00|测试3
2022-09-08 12:00|测试1
2022-09-09 01:00|测试2
2022-09-09 02:00|测试1
2022-09-09 03:00|测试1
2022-09-09 04:00|测试3
2022-09-09 05:00|测试4
预期结果:
DateTime|消息
2022-09-08 11:00|测试3
2022-09-08 12:00|测试1
2022-09-09 01:00|测试2
2022-09-09 04:00|测试3
2022-09-09 05:00|测试4
第三个例子
实际结果:
DateTime|消息
2022-09-08 11:00|测试3
2022-09-08 12:00|测试1
2022-09-09 01:00|测试2
2022-09-09 02:00|测试1
2022-09-09 03:00|测试1
2022-09-09 04:00|测试3
2022-09-09 05:00|测试4
2022-09-09 06:00|测试1
预期结果:
DateTime|消息
2022-09-08 11:00|测试3
2022-09-08 12:00|测试1
2022-09-09 01:00|测试2
2022-09-09 04:00|测试3
2022-09-09 05:00|测试4
2022-09-09 06:00|测试1
任何帮助我们都将不胜感激。
已解决:
多亏了@Ahmed提供的问题,我设法解决了这个问题。感谢花时间解决这个问题的每一个人。
谢谢!
3条答案
按热度按时间wmtdaxz31#
您可以尝试以下操作:
此查询将过滤掉‘Test2’和‘Test4’之间的所有‘Test1’值,但不会过滤掉‘Test4’和‘Test2’之间的所有值,这是根据您的要求而定的;“‘Test2’是我的起点,‘Test4’是我的终点”。
请参见demo。
xxhby3vn2#
我尝试了这个查询,我可以执行它:,
(我是第一次接触堆栈溢出;如果代码中有任何错误或不是正确的方式,我希望收到反馈)。
2ekbmq323#
DateTime|消息
2022-09-09 00:00:00.000|测试1
2022-09-09 01:00:00.000|测试2
2022-09-09 04:00:00.000|测试3
2022-09-09 05:00:00.000|测试4
2022-09-09 06:00:00.000|测试1
Fiddle