qlikview中的具体季度日期,

时间:2013-12-19 20:02:43

标签: qlikview

我想创建季度部分,但没有上限功能,因为我有每个季度的具体日期。 第一季度是从10月22日到21日到1月。 所以我创建了这个函数:(在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(2013年10月23日)与2013年第一季度而不是2014年第一季度相关。

谢谢:)

2 个答案:

答案 0 :(得分:1)

  

Ceil(月份(如果(日(RetDate)&lt; 22,RetDate,QuarterStart(RetDate,1)))/ 3)作为季度

所以,如果日期是在22之后我将它向前推四分之一。

答案 1 :(得分:0)

我认为这就是你要找的东西:

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
]

结果是:

enter image description here

希望有所帮助。