首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pick函数中使用表达式

在pick函数中使用表达式
EN

Stack Overflow用户
提问于 2016-01-23 10:26:45
回答 1查看 677关注 0票数 3

我已经单独尝试了Num((today()-I_TRAN_DATE)/90 + 1,0),它将返回整数,但当我尝试将它与pick函数结合使用时,它似乎不起作用。我知道它还没有完成,但至少应该返回1-3个结果

代码语言:javascript
复制
pick(
    Num((today()-I_TRAN_DATE)/90 + 1,0)
    ,'less than 3 months'
    ,'3-6 months'
    ,'6-12 months'
    ,'greater than 1 year'
    )
EN

回答 1

Stack Overflow用户

发布于 2016-01-29 17:43:23

这看起来像是将数字从表达式传递给pick函数时出现的问题。当使用num函数时,这不会改变底层的值-包括更多的括号和一个round函数按照下面的脚本解决这个问题,该脚本生成一个日期列表,然后在结束时应用pick函数。

代码语言:javascript
复制
Let varMinDate = Num(31350);  //30/10/1985
Let varMaxDate = Num(42400);  //31/01/2016

TempCalendar:  
LOAD  
               $(varMinDate) + Iterno()-1 As Num,  
               Date($(varMinDate) + IterNo() - 1) as TempDate  
               AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate);  

TestCalendar:  
Load  
               TempDate AS I_TRAN_DATE,  
               week(TempDate) As Week,  
               Year(TempDate) As Year,  
               Month(TempDate) As PeriodMonth,  
               Day(TempDate) As Day,  
               if(Year2Date(TempDate),1,0) as CurYTDFlag,  
               if(Year2Date(TempDate,-1),1,0) as LastYTDFlag,  
               inyear(TempDate, Monthstart($(varMaxDate)),-1) as RC12,  
               date(monthstart(TempDate), 'MMM-YYYY') as MonthYear,  
               Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear,  
               WeekDay(TempDate) as WeekDay,
               if(TempDate>=MonthStart(AddMonths(Today(),-12)) and(TempDate<=MonthStart(Today())),1,0) as Rolling12Month  
               ,'Q' & Ceil (Month(TempDate)/3) as Quarter 
               ,Year(TempDate)&'-Q' & Ceil (Month(TempDate)/3) as YearQuarter
               ,if(Year(TempDate)=(Year(Today())-1),1,0) as LastYear
               , if(MonthStart(TempDate)=MonthStart(Today()),null(),'Exclude Current Period') As ExcludeCurrentPeriod
Resident TempCalendar  
Order By TempDate ASC;  
Drop Table TempCalendar;  

Let varMinDate = null();
Let varMaxDate = null();


PeriodTable:
Load 
Pick(round((num((((today()-I_TRAN_DATE)/90) + 1),0)),1)
,'less than 3 months'
,'3-6 months'
,'6-12 months'
,'greater than 1 year') as Period
,I_TRAN_DATE
Resident TestCalendar;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34958945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档