【发布时间】:2015-05-18 08:38:52
【问题描述】:
我需要一个根据月份/年份返回数据的查询。下面是我编写的一个子查询,它返回一行 - start_date 和 end_date 是我需要在我的主查询中使用的值
WITH SUBQ AS (SELECT
dim.MONTH_NAME as current_month_name
,dim.year_period as current_month
,dim.PERIOD_YEAR as YEAR
,CASE WHEN dim.year_period NOT LIKE '%01' THEN to_number(CONCAT(to_char(dim.PERIOD_YEAR-1) , '01' ))
WHEN dim.year_period LIKE '%01'THEN to_number(CONCAT(to_char(dim.PERIOD_YEAR-2) , '01' ))
END AS START_DATE
,CASE WHEN dim.year_period NOT LIKE '%01' THEN to_number(CONCAT(to_char(dim.PERIOD_YEAR) , '01' ))
WHEN dim.year_period LIKE '%01'THEN to_number(CONCAT(to_char(dim.PERIOD_YEAR-1) , '01' )) END AS ENDDATE
from dim_periods dim WHERE dim.year_period=to_number(to_char(sysdate, 'YYYYMM')))
问题是 - 如何在 where 子句中使用子查询中的值和一行? 我需要得到这样的东西,我只是不明白我应该如何加入我的子查询和我使用的其他表 -
select * from financial_data fd
where fd.year_period BETWEEN subq.start_date and subq.enddate
【问题讨论】: