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

Откуда:
Сообщений: 953
У меня такая задача. Есть выборка. Выбираемое выражение содержит кучу case when. И мне нужно выбрать те значения таблицы для которой это выражение не существует как экземпляр поля Objects.id.
select 
case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end
from [INFO_21.12.2011] t1 where 

[color=blue](case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end)

not in (select id from Objects)[/color]



Как такое сделать? Как сиспользовать выражение получаемое в условии where?
22 дек 11, 04:59    [11806718]     Ответить | Цитировать Сообщить модератору
 Re: выбираемое выражение с when использовать в условии выборки  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
select 
case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end
from [INFO_21.12.2011] t1 where 

[SIZE=4](case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end)

not in (select id from Objects)[/SIZE]
22 дек 11, 05:00    [11806720]     Ответить | Цитировать Сообщить модератору
 Re: выбираемое выражение с when использовать в условии выборки  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Мордор Держимордов
select 
case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end
from [INFO_21.12.2011] t1 where 

(case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end)

not in (select id from Objects)

https://www.sql.ru/faq/faq_topic.aspx?fid=202
Чтобы выделить часть текста, заключенного в тег SRC, есть две возможности:
1. выделить всю строку с помощью спецкода ==> в начале строки
2. выделить произвольную часть строки с помощью спецкодов >>> и <<<


* По теме: нифига не врубился, что именно нужно.
22 дек 11, 05:22    [11806725]     Ответить | Цитировать Сообщить модератору
 Re: выбираемое выражение с when использовать в условии выборки  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
kDnZP
Мордор Держимордов
select 
case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end
from [INFO_21.12.2011] t1 where 

(case when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
else
str(Inn) + '-' + kpp
end)

not in (select id from Objects)

https://www.sql.ru/faq/faq_topic.aspx?fid=202
Чтобы выделить часть текста, заключенного в тег SRC, есть две возможности:
1. выделить всю строку с помощью спецкода ==> в начале строки
2. выделить произвольную часть строки с помощью спецкодов >>> и <<<


* По теме: нифига не врубился, что именно нужно.



Что надо... Смотрим на селект. Выбираем выражение которое состоит из некоторого количетства case when. В итоге получается varchar-значение. Теперь я хочу чтобы этот селект выбирал только те записи для которых это varchar-значение не существует в поле Id таблицы Objects.
22 дек 11, 05:40    [11806731]     Ответить | Цитировать Сообщить модератору
 Re: выбираемое выражение с when использовать в условии выборки  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 659
Мордор Держимордов,
-----1
SELECT [q].[field]
    FROM (select (case
                      when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
                      else str(Inn) + '-' + kpp
                  end) [field]
              from [INFO_21.12.2011]
         ) [q]
    WHERE NOT EXISTS(SELECT 1
                         FROM Objects
                         WHERE id = [q].[field])
-----2
WITH [cte]([field])
AS (
select (case
            when kpp = '' then str(Inn) + '-' + left(str(inn),4) + '01001'
            else str(Inn) + '-' + kpp
        end) [field]
    from [INFO_21.12.2011]
)
SELECT [cte].[field]
    FROM [cte]
         LEFT OUTER JOIN Objects [o] ON [o].[id] = [q].[field]
    WHERE [o].[id] IS NULL
-----Любые вариации на тему...
22 дек 11, 06:51    [11806758]     Ответить | Цитировать Сообщить модератору
 Re: выбираемое выражение с when использовать в условии выборки  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
Guf,

О, блин! Первый вариант! ПОчему я о нём не подумал???
22 дек 11, 08:01    [11806826]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить