конкретные даты кварталов в qlikview,

Я хотел создать квартальную секцию, но без функции потолка, потому что у меня есть конкретные даты для каждого квартала. первый квартал - с 22 октября по 21 января. поэтому я создал эту функцию: (в loadscript)

 if((Month(RetDate)='10' AND Day(RetDate)>21) OR (Month(RetDate) = '11' OR Month(RetDate) = '12') OR (Month(RetDate)='1' AND Day(RetDate)<22),'Q1',
        if((Month(RetDate)='1' AND Day(RetDate)>21) OR (Month(RetDate) = '2' OR Month(RetDate) = '3') OR (Month(RetDate)='4' AND Day(RetDate)<22),'Q2',
        if((Month(RetDate)='4' AND Day(RetDate)>21) OR (Month(RetDate) = '5' OR Month(RetDate) = '3') OR (Month(RetDate)='6' AND Day(RetDate)<22),'Q3','Q4'))) as Quarter1,

Но таким образом, например, 23.10.13 (23 октября) относится к первому кварталу 2013 года, а не к первому кварталу 2014 года.

Благодарность :)


person user3022987    schedule 19.12.2013    source источник


Ответы (2)


Ceil( Месяц( If( if( Day(RetDate)‹22,RetDate,QuarterStart(RetDate,1)) )/3) as Quarter

поэтому, если дата после 22, я передвигаю ее на четверть вперед.

person seebach    schedule 20.12.2013

Я думаю, это то, что вы ищете:

LOAD Customer,
         RetDate,

     if(Month(RetDate)='1', 
         if(Day(RetDate)<22, 'Q1', 'Q2'),
     if(Month(RetDate)='2', 'Q2',
     if(Month(RetDate)='3', 'Q2',
     if(Month(RetDate)='4', 
         if(Day(RetDate)<22, 'Q2', 'Q3'),
     if(Month(RetDate)='5', 'Q3',
     if(Month(RetDate)='6', 'Q3',
     if(Month(RetDate)='7', 
         if(Day(RetDate)<22, 'Q3', 'Q4'),
     if(Month(RetDate)='8', 'Q4',
     if(Month(RetDate)='9', 'Q4',
     if(Month(RetDate)='10', 
         if(Day(RetDate)<22, 'Q4', 'Q1'),
     if(Month(RetDate)='11', 'Q1',
     if(Month(RetDate)='12', 'Q1',
     'undef' )))))))))))) as Quarter,
 INLINE [
Customer, RetDate
A-Mark, 20.10.2013
A-Mark, 21.10.2013
A-Mark, 22.10.2013
A-Mark, 23.10.2013
A-Mark, 24.10.2013
C-Mart, 19.01.2014
C-Mart, 20.01.2014
C-Mart, 21.01.2014
C-Mart, 22.01.2014
]

и результат:

введите здесь описание изображения

Надеюсь, это поможет.

person smartmeta    schedule 20.12.2013