Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

andreyfcdk91
New Contributor III

Fill missing sums from previous months

Good day!

In my model i have such table:

Temp:

Load

Chain

Contractor

EAN

YearMonth

Sum

from Sales.qvd (qvd);

For some YearMonths Sum is null.

I need for every EAN, aggregated by Contractor and Chain, where Sum is null, set value from nearest YearMonth.

If there no any nearest YearMonth with sum >0,aggregated by Chain and Contractor, value must be null

Source table:

     

ChainContractorEANYearMonthSum
AuchanАшан1456201301-
AuchanАшан145620130245
AuchanАшан145620130356
AuchanАшан1456201304-
AuchanАшан1456201305-
AuchanАшан145620130632
AuchanАшан1456201307-
AuchanАшан1456201308-
AuchanАшан1456201309543
AuchanАшан1456201310-
AuchanАшан1456201311-
AuchanАшан1456201312-
AuchanАшан1456201401324
AuchanАшан145620140265
AuchanАшан1456201403342
AuchanАшан1456201404324
AuchanАшан145620140554
AuchanАшан1456201406324
AuchanАшан145620140789
AuchanАшан1456201408-
AuchanАшан1456201409-
AuchanАшан1456201410-
AuchanАшан1456201411-
AuchanАшан1456201412-
AuchanАшан145620150123
AuchanАшан145620150224
AuchanАшан14562015032342
AuchanАшан1456201504-
AuchanАшан1456201505-
AuchanАшан1456201506324
AuchanАшан1456201507-
AuchanАшан267201301-
AuchanАшан267201302-
AuchanАшан267201303-
AuchanАшан267201304-
AuchanАшан267201305-
AuchanАшан26720130676
AuchanАшан267201307-
AuchanАшан267201308-
AuchanАшан267201309-
AuchanАшан267201310-
AuchanАшан267201311-
AuchanАшан267201312-
AuchanАшан267201401-
AuchanАшан26720140256
AuchanАшан26720140365
AuchanАшан26720140476
AuchanАшан267201405343
AuchanАшан267201406-
AuchanАшан26720140776
AuchanАшан267201408-
AuchanАшан267201409-
AuchanАшан267201410-
AuchanАшан267201411-
AuchanАшан267201412-
AuchanАшан26720150189
AuchanАшан267201502-
AuchanАшан267201503-
AuchanАшан267201504-
AuchanАшан267201505-
AuchanАшан267201506-
AuchanАшан267201507-

Necessary table:

      

ChainContractorEANYearMonthSumNecessary sum
AuchanАшан1456201301--
AuchanАшан14562013024545
AuchanАшан14562013035656
AuchanАшан1456201304-56
AuchanАшан1456201305-56
AuchanАшан14562013063232
AuchanАшан1456201307-32
AuchanАшан1456201308-32
AuchanАшан1456201309543543
AuchanАшан1456201310-543
AuchanАшан1456201311-543
AuchanАшан1456201312-543
AuchanАшан1456201401324324
AuchanАшан14562014026565
AuchanАшан1456201403342342
AuchanАшан1456201404324342
AuchanАшан14562014055454
AuchanАшан1456201406324324
AuchanАшан14562014078989
AuchanАшан1456201408-89
AuchanАшан1456201409-89
AuchanАшан1456201410-89
AuchanАшан1456201411-89
AuchanАшан1456201412-89
AuchanАшан14562015012323
AuchanАшан14562015022424
AuchanАшан145620150323422342
AuchanАшан1456201504-2342
AuchanАшан1456201505-2342
AuchanАшан1456201506324324
AuchanАшан1456201507-324
AuchanАшан267201301--
AuchanАшан267201302--
AuchanАшан267201303--
AuchanАшан267201304--
AuchanАшан267201305--
AuchanАшан2672013067676
AuchanАшан267201307-76
AuchanАшан267201308-76
AuchanАшан267201309-76
AuchanАшан267201310-76
AuchanАшан267201311-76
AuchanАшан267201312-76
AuchanАшан267201401-76
AuchanАшан2672014025656
AuchanАшан2672014036565
AuchanАшан2672014047676
AuchanАшан267201405343343
AuchanАшан267201406-343
AuchanАшан2672014077676
AuchanАшан267201408-76
AuchanАшан267201409-76
AuchanАшан267201410-76
AuchanАшан267201411-76
AuchanАшан267201412-76
AuchanАшан2672015018989
AuchanАшан267201502-89
AuchanАшан267201503-89
AuchanАшан267201504-89
AuchanАшан267201505-89
AuchanАшан267201506-89
AuchanАшан267201507-89

Very glad for your help and support.

1 Solution

Accepted Solutions

Re: Fill missing sums from previous months

This?

Temp:

LOAD

*

From Sales.qvd (qvd);

Final:

LOAD *,

          If(EAN =Peek('EAN'), If(Len(Trim(Sum)) = 0, Peek('Sum1'), Sum), Sum) as Sum1

Resident Temp

Order By Chain, Contractor, EAN, YearMonth;

DROP Table Temp;

HTH

Best,

Sunny

3 Replies

Re: Fill missing sums from previous months

Temp:

LOAD

     AutoNumber(Chain&Contractor&EAN) as Key,

  Chain,

     Contractor,

     EAN,

     YearMonth,

     Sum

FROM

Sales.qvd (qvd);

Final:

Load

  *,

  If(Key = Previous(Key) and IsNull(Sum), Peek('NewSum'), Sum) as NewSum

Resident Temp

Order By Key, YearMonth;

Drop Table Temp;

MVP
MVP

Re: Fill missing sums from previous months

Temp:

load

*

From Sales.qvd (qvd)

;

Final:

LOAD

    *,

    if(IsNull(Sum) and Previous(EAN)=EAN,Peek(Sum_Final),Sum)  as Sum_Final

Resident Temp Order by Chain,Contractor,EAN,YearMonth;

DROP Table Temp;

Chain Contractor EAN YearMonth Sum_Final
AuchanАшан1456201301
AuchanАшан145620130245
AuchanАшан145620130356
AuchanАшан145620130456
AuchanАшан145620130556
AuchanАшан145620130632
AuchanАшан145620130732
AuchanАшан145620130832
AuchanАшан1456201309543
AuchanАшан1456201310543
AuchanАшан1456201311543
AuchanАшан1456201312543
AuchanАшан1456201401324
AuchanАшан145620140265
AuchanАшан1456201403342
AuchanАшан1456201404324
AuchanАшан145620140554
AuchanАшан1456201406324
AuchanАшан145620140789
AuchanАшан145620140889
AuchanАшан145620140989
AuchanАшан145620141089
AuchanАшан145620141189
AuchanАшан145620141289
AuchanАшан145620150123
AuchanАшан145620150224
AuchanАшан14562015032342
AuchanАшан14562015042342
AuchanАшан14562015052342
AuchanАшан1456201506324
AuchanАшан1456201507324

Re: Fill missing sums from previous months

This?

Temp:

LOAD

*

From Sales.qvd (qvd);

Final:

LOAD *,

          If(EAN =Peek('EAN'), If(Len(Trim(Sum)) = 0, Peek('Sum1'), Sum), Sum) as Sum1

Resident Temp

Order By Chain, Contractor, EAN, YearMonth;

DROP Table Temp;

HTH

Best,

Sunny

Community Browser