Мне нужен запрос, который возвращает данные в зависимости от того, какой месяц/год он есть. Ниже подзапрос я написал, который возвращает одну строку - start_date и end_date являются значения мне нужно использовать в моем главном запросеУсловие в выражении WHERE (Oracle)
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')))
вопрос - как я могу использовать значения из подзапроса с одной строки в том, где статей? мне нужно, чтобы получить что-то вроде этого, я просто не понимаю, как я должен присоединиться к моему подзапросу и остальные таблиц я использую -
select * from financial_data fd
where fd.year_period BETWEEN subq.start_date and subq.enddate
Хорошо, но как мне это сделать с присоединением к предложению WHERE? Потому что, если я пытаюсь сделать следующее: fd.year_period = subq2.current_month И fd.year_period между subq2.start_date и subq2.enddate я не получаю все строки, возвращаемые я просто не понимаю, почему – user3014914
@ user3014914 я предоставил вам синтаксис ANSI. См. Мое обновление для эквивалентного синтаксиса Oracle. –