как заполнить предыдущее значение, пока не будет заполнено новое значение - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть ниже Набор данных, где рассчитывается количество для каждого месяца.Я должен создать отчет с этими данными, но количество, которое мы получаем за каждый месяц около 5-го или 6-го рабочего дня.До тех пор он всегда показывает NULL или 0. так что я бы хотел заполнить предыдущее значение, пока мы не получим счет за месяцы.

Итак, если ниже мой набор данных, то я хотел бы видеть счет 14793417 за месяцы> = '2018-08-01'.Как только мы получим данные за эти месяцы, они должны получить правильный счет, а не предыдущий счет.

Count       yyyymm  Month-Date
15339017    201801  2018-01-01
13832952    201802  2018-02-01
14432701    201803  2018-03-01
14259210    201804  2018-04-01
14863942    201805  2018-05-01
14377470    201806  2018-06-01
14793417    201807  2018-07-01
NULL        NULL    2018-08-01
NULL        NULL    2018-09-01
NULL        NULL    2018-10-01
NULL        NULL    2018-11-01
NULL        NULL    2018-12-01

Я пытался с функцией задержки, но я не понимаю это правильно.

 select distinct 
 [count],
 CASE WHEN [count] IS NULL THEN 
lag([count]) over(partition by [Month-Date])  order by [Month-Date])
else [count] end,
yyyymm
from #table
group by [Month-Date],yyyymm

Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 14 сентября 2018

Не уверен, какой у вас #table, но ниже приведен пример:

WITH ABC 
AS
(
   SELECT 1 as month, 500 as total
   UNION ALL
   SELECT 2, 1000
   UNION ALL 
   SELECT 3, NULL
   UNION ALL 
   SELECT 4 , NULL
)
SELECT month,ISNULL(total,previousMonth)
FROM 
(
   SELECT *, LAG(TOTAL)OVER(ORDER BY month) as previousMonth
   FROM ABC
) as A
...