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

Откуда:
Сообщений: 40
Доброго времени суток. Столкнулся с такой проблемой.
Есть таблица и нужно в одном селекте присвоить разные значения из таблицы разным переменным, пример:
Declare @Var1 int
,@Var2 int

With Tbl (Ind,Eq) as
(
Select Ind = 'A', Eq = 15 union
Select 'B', 8
)

Select @Var1 = case when Ind = 'A' then eq end
,@Var2 = case when Ind = 'B' then eq end
from tbl

Select @Var1, @Var2

В результате переменной @Var1 присваивается пустое значение. Я понимаю почему это происходит. Хотелось бы понять, можно ли как-то это все таки сделать в одном запросе?
Заранее спасибо.
З.Ы. если тема уже была - ткните пальцем.
11 ноя 13, 17:16    [15110551]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
qwerty112
Guest
Mashtar
Доброго времени суток. Столкнулся с такой проблемой.
Есть таблица и нужно в одном селекте присвоить разные значения из таблицы разным переменным, пример:
Declare @Var1 int
		,@Var2 int
		
With Tbl (Ind,Eq) as
(
	Select Ind = 'A', Eq = 15 union
	Select 'B', 8
)

Select @Var1 = case when Ind = 'A' then eq end
		,@Var2 = case when Ind = 'B' then eq end
from tbl

Select @Var1, @Var2


В результате переменной @Var1 присваивается пустое значение. Я понимаю почему это происходит. Хотелось бы понять, можно ли как-то это все таки сделать в одном запросе?
Заранее спасибо.
З.Ы. если тема уже была - ткните пальцем.

нуу, так, например
Select @Var1 = max(case when Ind = 'A' then eq end)
		,@Var2 = max(case when Ind = 'B' then eq end)
from tbl
11 ноя 13, 17:21    [15110597]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
Mashtar
Member

Откуда:
Сообщений: 40
qwerty112,
К сожалению не прокатывает так. @Var1 = 15 , @Var2 = null в итоге.
11 ноя 13, 17:25    [15110620]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
qwerty112
Guest
Mashtar
qwerty112,
К сожалению не прокатывает так. @Var1 = 15 , @Var2 = null в итоге.

неверю !
Declare @Var1 int
		,@Var2 int
		
;With Tbl (Ind,Eq) as
(
	Select Ind = 'A', Eq = 15 union
	Select 'B', 8
)

Select @Var1 = max(case when Ind = 'A' then eq end)
		,@Var2 = max(case when Ind = 'B' then eq end)
from tbl

Select @Var1, @Var2

Warning: Null value is eliminated by an aggregate or other SET operation.
            
----------- -----------
15          8

(1 row(s) affected)
11 ноя 13, 17:31    [15110679]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
Mashtar
Member

Откуда:
Сообщений: 40
qwerty112,
огромное спасибо! У меня в кейсе сравнивалось с 'a' а в таблице было значение 'A'.... не думал что от регистра зависит...
11 ноя 13, 17:38    [15110740]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Mashtar
qwerty112,
огромное спасибо! У меня в кейсе сравнивалось с 'a' а в таблице было значение 'A'.... не думал что от регистра зависит...

Это значит, что у вас регистрозависимый collation столбца... т.е. collation, в названии которого есть суффикс _CS (Case Sensitive).
11 ноя 13, 17:44    [15110789]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гость333
Mashtar
qwerty112,
огромное спасибо! У меня в кейсе сравнивалось с 'a' а в таблице было значение 'A'.... не думал что от регистра зависит...

Это значит, что у вас регистрозависимый collation столбца... т.е. collation, в названии которого есть суффикс _CS (Case Sensitive).
Почему не бинарный (_BIN)?
11 ноя 13, 17:48    [15110835]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменным табличные значения  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
Почему не бинарный (_BIN)?

ну или бинарный, как-то позабыл о нём :-)
11 ноя 13, 17:52    [15110866]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить