如何将行拆分为以 NULL 行作为分隔符的不同周期 SQL (SSMS)

问题描述 投票:0回答:1

我正在尝试添加与下面和照片中的“期间”列等效的列(如果您可以查看)。您将如何添加一个列来指定给定日期所在的时间段,其中 NULL 值可以说是“分区”? enter image description here

有效数据 身份证 覆盖dt 期间
1/1/23 xxx 1/1/23 1
2/1/23 xxx 2/1/23 1
3/1/23 xxx
4/1/23 xxx 4/1/23 2
5/1/23 xxx 5/1/23 2
6/1/23 xxx
7/1/23 xxx 6/1/23 3

我尝试过超前和滞后函数、CTE 等的不同变体,但我就是无法弄清楚。

sql common-table-expression
1个回答
0
投票

我不确定你如何定义你的经期,但根据“照片”,你需要一个案例表达。

CASE WHEN Covereddt IS NULL THEN NULL 
     WHEN ValidDat BETWEEN '1/1/2023' AND  '2/28/2023' THEN 1
     WHEN ValidDat BETWEEN '3/1/2023' AND  '6/30/2023' THEN 2
     WHEN ValidDat BETWEEN '7/1/2023' AND '12/31/2023' THEN 3
 END AS Period
© www.soinside.com 2019 - 2024. All rights reserved.