У меня есть сценарий, который я хочу извлечь значения из db соответственно с некоторыми датами.SQL Server: аргумент WHERE между
У меня есть функция, которая возвращает дату, эта дата может быть currentDate - 1 месяц или может быть curentDate -2 месяца. Функция
set @syssDate = DATEADD(month, -1, @syss_date);
и я объявил дату начала:
declare @start_quarter datetime
set @start_quarter = '2015-07-01';
Все, что я хочу в моей статье WHERE
, чтобы добавить
case
when syssDate = start_quarter
then bu.date between '2015-01-01' and '2015-10-01'
else -- another date
Мой запрос выглядит следующим образом:
declare @start_quarter datetime
set @start_quarter = '2015-01-01';
declare @actual_Date datetime
set @actual_Date = DATEADD(month, -1, @rollover_date);
select sum(t.Revenue) as Revenue from (
select sum(bu.value) as Revenue
from bus_category_for bu
join bus_category buc on buc.id=bu.bus_category_id
join bus bu on bu.id=buc.bus_id
where buc.type_id=18 and bu.id=21 and
--Here I want to add a case statement
bu.date between '2015-01-01' and '2015-10-01'
'CASE' в T-SQL является ** выражением ** (например,' a + b'), которое может возвращать ** одно., Атомное значение ** - это ** NOT ** инструкция управления потоком, поэтому у вас не может быть целых блоков кода внутри него. –
И как его решить? Как я могу использовать инструкцию 'case' ??? –
Это нехорошая ситуация для 'CASE' - вам придется иметь ** два **' CASE' выражения - одно для первой даты и еще одно второе число в вашей 'BETWEEN' .... лучше использовать одно из решений, предоставленных теми, кто уже ответил –