select statment
我在 sql server 2012 上工作,我遇到了从上个月到本月无法获取 Partid 的问题march (3)
。
基于last date
存在每partid
并在同一时间,如果有的话,gaps between dates
然后根据最后日期填写
因此,如果
我找到了最后日期为 2022-01-08 的 partid,然后我将添加08-02-2022
并08-03-2022
作为 partid6070
如果partid
在一个月7
和下个月有日期,并且在第 8个月10
没有日期part id
和 9 然后它必须gaps
根据上个月显示这个,因为 partid 1234 有 gap 。
这两种情况都必须适用于所有基于partid
.
Createddate
下面在甲酸盐上使用yyyy-mm-dd
。
create table Parts
(
PartId int,
CreatedDate date
)
insert into Parts(PartId,CreatedDate)
values
(1234,'2021-07-03'),
(1234,'2021-10-05'),
(1234,'2021-11-05'),
(5981,'2021-11-15'),
(5981,'2021-12-03'),
(6070,'2021-12-12'),
(6070,'2022-01-08')
我需要按预期结果select statment
显示parts
green rows
只是为了更清楚,这些零件必须在旧零件添加之前存在。
预期结果
我尝试什么
更新后的帖子
下面的代码给了我预期结果的一部分
因为它给了我剩余日期之间的空白以获取当前月份的日期
那么该怎么做呢?
;with cte as (
select partid, createddate,
dateadd(month, -1,
coalesce(lead(createddate) over (partition by partid order by createddate),
max(createddate) over ()
)
) as end_month
from Parts
union all
select partid, dateadd(month, 1, createddate), end_month
from cte
where createddate <end_month
)
select *
from cte
order by partid, createddate