3 Replies Latest reply: Jul 11, 2015 8:47 PM by Sunny Talwar RSS

    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.

        • Re: Fill missing sums from previous months
          Manish Kachhia

          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;

          • Re: Fill missing sums from previous months
            Alessandro Furtado

            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
              Sunny Talwar

              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