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

Откуда:
Сообщений: 336
В запросе есть длинное вычисляемое поле, значение которое далее нужно преобразовать через CASE.
писать так:
case
   when вычисляемое_длинное_поле like '%шаблон1%' then ...
   when вычисляемое_длинное_поле like '%шаблон2%' then ...
   when вычисляемое_длинное_поле like '%шаблон3%' then ...
end

чересчур громоздко
хотелось бы что-то типа этого
case вычисляемое_длинное_поле
   when like '%шаблон1%' then ...
   when like '%шаблон2%' then ...
   when like '%шаблон3%' then ...
end

но, похоже, такой конструкции не предусмотрено
остаётся только CTE (with)?
3 дек 15, 09:42    [18506119]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с синтаксисом  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
=Сергей=
хотелось бы что-то типа этого
case вычисляемое_длинное_поле
   when like '%шаблон1%' then ...
   when like '%шаблон2%' then ...
   when like '%шаблон3%' then ...
end

но, похоже, такой конструкции не предусмотрено
остаётся только CTE (with)?
Ну вот, чуть что - сразу CTE. Хотя, кому как удобнее.
Можно ещё так:
select case when AAA like '%шаблон1%' then ...
            when AAA like '%шаблон2%' then ...
            when AAA like '%шаблон3%' then ...
       end
from (
  select ...,
    вычисляемое_длинное_поле as AAA
  from ...
) a
3 дек 15, 09:50    [18506154]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с синтаксисом  [new]
asdor
Member

Откуда: Москва
Сообщений: 513
А если тупо, приджойнить это поле, в отдельной выборке?
Тогда вычисление, будет написано 1 раз. И легко пользоваться в основной результатами
3 дек 15, 09:52    [18506167]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с синтаксисом  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2428
=Сергей=,

case
when t.ВДП
...
end

from ...
cross apply (
  select вычисляемое_длинное_поле as ВДП
) t
3 дек 15, 11:55    [18507210]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с синтаксисом  [new]
mishanya3624
Member

Откуда:
Сообщений: 796
StarikNavy
=Сергей=,

case
when t.ВДП
...
end

from ...
cross apply (
  select вычисляемое_длинное_поле as ВДП
) t

а что cross apply будет в данном случае делать, у него не будут задваиваться значения?
3 дек 15, 12:02    [18507273]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с синтаксисом  [new]
пьяный тюлень
Member

Откуда:
Сообщений: 100
StarikNavy
=Сергей=,

case
when t.ВДП
...
end

from ...
cross apply (
  select вычисляемое_длинное_поле as ВДП
) t

Тогда проще так:
case
when Calculated.Value like '...' then ...
...
end

from ...
cross apply ( values ( вычисляемое_длинное_поле ) ) as Calculated(Value)


Можно даже каскадные эплаи делать. Задваиваться не будет.
3 дек 15, 12:46    [18507619]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить