【发布时间】:2017-07-18 06:21:34
【问题描述】:
我的源数据是这样的——看图片here
现在我正在尝试根据 OFFSET_PERIOD_FROM 为 PORTFOLIO_GROUP、PORTFOLIO_REGION、LIMIT_NAME 的每个唯一组合计算 START_DATE_ID。为此,我在 select 语句中使用了这个 case 语句
CASE
OFFSET_PERIOD_FROM = 0 THEN TRUNC(SYSDATE, 'Q')
OFFSET_PERIOD_FROM = 1 THEN ADD_MONTHS(TRUNC(SYSDATE, 'Q'),3)
OFFSET_PERIOD_FROM = 2 THEN ADD_MONTHS(TRUNC(SYSDATE, 'Q'),6) -- 6 is multiple of 3 and so on
OFFSET_PERIOD_FROM = 3 THEN ADD_MONTHS(TRUNC(SYSDATE, 'Q'),9)
OFFSET_PERIOD_FROM = 4 THEN ADD_MONTHS(TRUNC(SYSDATE, 'Q'),12)
OFFSET_PERIOD_FROM = 5 THEN ADD_MONTHS(TRUNC(SYSDATE, 'Q'),15)
END AS START_DATE_ID
现在我的问题是,对于 PORTFOLIO_GROUP、PORTFOLIO_REGION、LIMIT_NAME 的每个组合,OFFSET_PERIOD_FROM 的值不限于 5。
那么如何为 PORTFOLIO_GROUP、PORTFOLIO_REGION、LIMIT_NAME 的每个组合运行这个 case 语句,例如 0..max(OFFSET_PERIOD_FROM)
【问题讨论】:
-
类似
ADD_MONTHS(TRUNC(SYSDATE, 'Q'), OFFSET_PERIOD_FROM * 3)? (未经测试)
标签: sql oracle plsql oracle11g