Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите найти верный путь решения.  [new]
woodgoblin
Member

Откуда: Москва
Сообщений: 6
Добрый день!
Помогите пожалуйста найти верный путь.
Есть запрос:
select [No_] from [item] as i
join [agreement] as agr
on agr.[code] = i.[agreement]
where i.[customs] in case when agr.[t] = 2 then (0,1) else (0,1,2,3) end

Он не работает, т.к. case не может выводить такой результат.
Как правильно написать такой запрос?
10 май 16, 16:59    [19154409]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти верный путь решения.  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2567
woodgoblin,

select [No_] from [item] as i
join [agreement] as agr
on agr.[code] = i.[agreement] 
where
(
(agr.[t] = 2 and i.[customs] in (select 0 as id union all select 1)) or
(agr.[t] <> 2 and i.[customs] in (select 0 as id union all select 1 union all select 2 union all select 3))
)
10 май 16, 17:07    [19154472]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти верный путь решения.  [new]
sergeimv
Member

Откуда: Россия, г.Казань
Сообщений: 42
select 
	[No_] 
from 
	[item] as i
	join [agreement] as agr on agr.[code] = i.[agreement] 
where 
	i.[customs] in (0,1)
	or
	agr.[t] <> 2 and i.[customs] in (2,3)
10 май 16, 17:58    [19154776]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти верный путь решения.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21247
where case when agr.[t] = 2 then i.[customs] in (0,1) else i.[customs] in (0,1,2,3) end
10 май 16, 19:32    [19155122]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти верный путь решения.  [new]
aleks2
Guest
;with ns as ( select n from (values (0), (1), (2), (3) ) as x(n))
select [No_] from [item] as i
                  join [agreement] as agr on agr.[code] = i.[agreement] 
             where i.[customs] in (select n from ns where n < agr.[t] or agr.[t] <> 2 )
11 май 16, 07:19    [19156070]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить