【发布时间】:2019-05-21 10:06:54
【问题描述】:
我使用以下查询来填补缺失的月份
Declare @Sample Table(year int, month int,product as nvarchar(50), qty_ytd int);
Insert @Sample(year, month, qty_ytd) Values
(2017, 01,'book', 20),
(2017, 02, 'pc', 30),
(2018, 01, 'book', 50);
;With Months As
(Select 1 As month
Union All
Select month + 1 From Months Where month < 12)
, YearsAndMonths As
(Select distinct year,m.month from @Sample cross join Months m)
select ym.*, coalesce(s.qty_ytd, s2.qty_ytd) qty_ytd, coalesce(s.qty_ytd, 0) QTY from YearsAndMonths ym
left join @sample s on ym.year = s.year and ym.month = s.month
left join (select qty_ytd, year,
row_number() over (partition by year order by month desc) rn
from @Sample) s2 on ym.year = s2.year and rn = 1
我怎样才能添加“产品”?
【问题讨论】:
-
cross join和distinct product -
每次使用
year时使用year, product -
你测试过样品吗?它不会编译。
-
@csharp 。 . .您的代码没有运行。请展示您想要达到的结果。
标签: sql sql-server tsql sql-server-2008