sql server 为什么我用这个语句得到的日期只有2022.9-2023.1 不应该是到当前月份吗


with cte_date(dDate) as
(
    select CAST('2022-09-30' AS datetime)
    union all
    select dateadd(month, 1, dDate)
    from cte_date
    where convert(varchar(6),dDate,120) < convert(varchar(6),GETDATE(),120)
)

, cte0 as
(
    select convert(varchar(7), dDate, 120) as dDate
    from cte_date
)
, cte1 as
(
select
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), r1.FSTOCKINDATE, 120) 日期 ,r1.FQTY 初始数量--,0 生产入库数量,0 采购入库,0 销售出库数量,0 销售退货
from T_BD_MATERIAL t1
left join T_BD_MATERIAL_L t2 on t1.FMATERIALID=t2.FMATERIALID
left join T_STK_INVINITDETAIL r1 on r1.FMATERIALID=t1.FMATERIALID 
where r1.FSTOCKINDATE is not null and t1.FNUMBER ='401001010131-0001'
)
,cte2 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期 ,t3.FREALQTY 生产入库数量--,0 初始数量,0 采购入库,0 销售出库数量,0 销售退货
from T_BD_MATERIAL t1
left join T_BD_MATERIAL_L t2 on t1.FMATERIALID=t2.FMATERIALID
left join T_PRD_INSTOCKENTRY t3 on t3.FMATERIALID=t1.FMATERIALID
left join T_PRD_INSTOCK t4 on t4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte3 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate,120 ) 日期,t3.FREALQTY 采购入库--,0 初始数量,0 生产入库数量,0 销售出库数量,0 销售退货
from T_BD_MATERIAL t1
left join T_BD_MATERIAL_L t2 on t1.FMATERIALID=t2.FMATERIALID
left join T_STK_INSTOCKENTRY t3 on t3.FMATERIALID=t1.FMATERIALID
left join T_STK_INSTOCK t4 on t4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte4 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期,t3.FREALQTY 销售出库数量--,0 初始数量,0 生产入库数量,0 采购入库,0 销售退货
 FROM T_BD_MATERIAL t1
 left join T_BD_MATERIAL_L t2 ON T2.FMATERIALID=t1.FMATERIALID
 LEFT JOIN T_SAL_OUTSTOCKENTRY t3 ON t1.FMATERIALID=t3.FMATERIALID
LEFT JOIN T_SAL_OUTSTOCK t4 ON T4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte5 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期,t3.FREALQTY 销售退货--,0 初始数量,0 生产入库数量,0 采购入库,0 销售出库数量
FROM T_BD_MATERIAL T1
left join T_BD_MATERIAL_L t2 ON T2.FMATERIALID=t1.FMATERIALID
LEFT JOIN T_SAL_RETURNSTOCKENTRY t3 ON t1.FMATERIALID=t3.FMATERIALID
LEFT JOIN T_SAL_RETURNSTOCK t4 ON T4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte6 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期,t3.FQTY 其他入库数量--,0 初始数量,0 生产入库数量,0 采购入库,0 销售出库数量
FROM T_BD_MATERIAL T1
left join T_BD_MATERIAL_L t2 ON T2.FMATERIALID=t1.FMATERIALID
LEFT JOIN T_STK_MISCELLANEOUSENTRY t3 ON t1.FMATERIALID=t3.FMATERIALID
LEFT JOIN T_STK_MISCELLANEOUS t4 ON T4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte7 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期,t3.FQTY 其他出库数量--,0 初始数量,0 生产入库数量,0 采购入库,0 销售出库数量
FROM T_BD_MATERIAL T1
left join T_BD_MATERIAL_L t2 ON T2.FMATERIALID=t1.FMATERIALID
LEFT JOIN T_STK_MISDELIVERYENTRY t3 ON t1.FMATERIALID=t3.FMATERIALID
LEFT JOIN T_STK_MISDELIVERY t4 ON T4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte8 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期,t3.FGAINQty 盘盈数量--,0 初始数量,0 生产入库数量,0 采购入库,0 销售出库数量
FROM T_BD_MATERIAL T1
left join T_BD_MATERIAL_L t2 ON T2.FMATERIALID=t1.FMATERIALID
LEFT JOIN T_STK_STKCOUNTGAINENTRY t3 ON t1.FMATERIALID=t3.FMATERIALID
LEFT JOIN T_STK_STKCOUNTGAIN t4 ON T4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte9 as
(
select 
t1.FNUMBER 编号,t2.FNAME 名称 ,convert(varchar(7), t4.FDate, 120) 日期,t3.FLOSSQty 盘亏数量--,0 初始数量,0 生产入库数量,0 采购入库,0 销售出库数量
FROM T_BD_MATERIAL T1
left join T_BD_MATERIAL_L t2 ON T2.FMATERIALID=t1.FMATERIALID
LEFT JOIN T_STK_STKCOUNTLOSSENTRY t3 ON t1.FMATERIALID=t3.FMATERIALID
LEFT JOIN T_STK_STKCOUNTLOSS t4 ON T4.FID=t3.FID
where t4.FDate is not null and t1.FNUMBER ='401001010131-0001'
)
,cte10 as
(
    select cte0.dDate,t1.编号,t1.名称 from cte0
    left join
    (
        select 编号,名称 from cte1
        union
        select 编号,名称 from cte2
        union
        select 编号,名称 from cte3
        union
        select 编号,名称 from cte4
        union
        select 编号,名称 from cte5
        union
        select 编号,名称 from cte6
        union
        select 编号,名称 from cte7
        union
        select 编号,名称 from cte8
        union
        select 编号,名称 from cte9
    ) t1 on 1=1
)
select cte10.dDate,cte6.编号,cte6.名称,cte1.初始数量,cte2.生产入库数量,cte3.采购入库,cte4.销售出库数量,cte5.销售退货,cte6.其他入库数量,cte7.其他出库数量,cte8.盘盈数量,cte9.盘亏数量
from cte10
left join cte1 on cte1.日期=cte10.dDate and cte1.编号=cte10.编号
left join cte2 on cte2.日期=cte10.dDate and cte2.编号=cte10.编号
left join cte3 on cte3.日期=cte10.dDate and cte3.编号=cte10.编号
left join cte4 on cte4.日期=cte10.dDate and cte4.编号=cte10.编号
left join cte5 on cte5.日期=cte10.dDate and cte5.编号=cte10.编号
left join cte6 on cte6.日期=cte10.dDate and cte6.编号=cte10.编号
left join cte7 on cte7.日期=cte10.dDate and cte7.编号=cte10.编号
left join cte8 on cte8.日期=cte10.dDate and cte8.编号=cte10.编号
left join cte9 on cte9.日期=cte10.dDate and cte9.编号=cte10.编号







这是谁写的代码,10层cte拉出去开除吧,光看你代码我是不能看出来有什么逻辑可言,你起码得介绍下原表数据