Фильтр даты SQL по двум полям

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я пытаюсь запросить таблицу, в которой есть поле даты (в YYYYMM ) и два поля прогнозов продаж, но я хочу запросить ее таким образом, чтобы я мог запрашивать два разных диапазона дат в отдельных столбцах, но включать их в один и тот же результат

Таблица называется SalesTable

Имена столбцов: CCYYMM (поле даты), FORECAST 1 (числа), FORECAST 2 (числа)

Диапазон полей даты от 201801 до 202412

Я хочу создать запрос, чтобы получить все значения продаж от FORECAST 1 от 201801 202006 до FORECAST 2 и все значения продаж для 202008 от 202112 до, возможно ли это сделать в одном запросе?

Комментарии:

1. Пожалуйста, предоставьте образцы данных и желаемые результаты.

2. Содержит ли столбец CCYYMM уникальные значения?

Ответ №1:

вы можете использовать РЕГИСТР для разделения итогов с помощью CCYYMM

 select  sum(case when ccyymm between 201801 and 202006 then FORECAST1 end)   as FORCAST1
        , sum(case when ccyymm between 202008 and 202112 then FORECAST2 end) as FORCAST2
from    SalesTable
  

Ответ №2:

Вы можете использовать UNION ALL для объединения:

 SELECT CCYYMM , FORECAST1
FROM SalesTable
WHERE CCYYMM BETWEEN x AND y
UNION ALL
SELECT CCYYMM , FORECAST2
FROM SalesTable
WHERE CCYYMM BETWEEN a AND b
  

Комментарии:

1. Это возвращает только столбец FORECAST1, столбец FORECAST2 отсутствует

2. Нет, это не так… посмотрите на строку 5