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

Откуда:
Сообщений: 839
  and DepartmentID IN(
  	case 
    	when exists(select id from #Ids where TableType=11)	 then 
      				(select id from #Ids where TableType=11)
      else DepartmentID
    end
    )

почему ругается на
Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения.

ведь там идет DepartmentID IN а не DepartmentID IN=
ПС
2008 R2
27 мар 12, 11:28    [12319045]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
ther
Member

Откуда:
Сообщений: 839
* ведь там идет DepartmentID IN а не DepartmentID =

блина единственный наверно форум в мире где запрещено редактирование(
27 мар 12, 11:33    [12319081]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
ther,
(select id from #Ids where TableType=11)
сей подзапрос может вернуть более одного значения
27 мар 12, 11:34    [12319088]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
ther
Member

Откуда:
Сообщений: 839
это понятно...на это и надеюсь...но если вы заметили то идет
and DepartmentID IN(
которое ест несколько значений
27 мар 12, 11:39    [12319113]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ther
...но если вы заметили то идет

а case вы заметили?
27 мар 12, 11:39    [12319122]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
DepartmentID IN(
		(
			select id from #Ids where TableType=11
			union all
			select DepartmentID
		)
    	       )


так не выйдет?
27 мар 12, 11:40    [12319124]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
ther
Member

Откуда:
Сообщений: 839
kDnZP
да))..так это ограничение сервака?
Konst_One
сейчас попробую
27 мар 12, 11:43    [12319152]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
ther
Member

Откуда:
Сообщений: 839
Konst_One
спасибо за наводку...непного допилил и поехало...так что насчет первого запроса..это ограничение счервака??
  and DepartmentID IN(
        select id from #Ids where TableType=11
        union all
        select 
        	case 
          	when exists(select id from #Ids where TableType=11) then null
          	else DepartmentID
         end 	
27 мар 12, 11:49    [12319197]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
denis2710,Ох ежик,так и хочется сказать
"Ни что не ограничивает полет фантазии программиста,как компилятор!!"
27 мар 12, 11:49    [12319199]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ther,
CASE (Transact-SQL): Evaluates a list of conditions and returns one of multiple possible result expressions.
27 мар 12, 11:51    [12319221]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> да))..так это ограничение сервака?

это "ограничение" языка sql.
вы, видимо, воспринимаете case как своего рода оператор ветвления.
это не так. case - это функция. скалярная - т.е. возвращающая _одно_ значение.

Posted via ActualForum NNTP Server 1.5

27 мар 12, 11:51    [12319227]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
BOL
Выражение CASE используется для оценки нескольких условий и возвращает одно значение для каждого условия.
27 мар 12, 11:53    [12319238]     Ответить | Цитировать Сообщить модератору
 Re: почему такая реакция в where +case  [new]
ther
Member

Откуда:
Сообщений: 839
ууу...понял...спасибо большое
27 мар 12, 11:54    [12319248]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить