Declare @XYZId Int
Select @XYZId = ABCId from ABCTable where ABCId in (1,9,18,27)
Select @XYXId
- выход: 27 - Ожидаемый результат: все идентификаторы
1
9
18
27
Вопрос не имеет особого смысла. Почему вы ожидаете, что это сработает, не объявив его как табличную переменную? И почему вы хотите этого избежать? Очевидно, что результат вашего запроса - это набор результатов, а не одно целое число. Используйте правильный инструмент для работы. В данном случае это табличная переменная. Если у вас есть конкретная веская причина, по которой вы хотите избежать табличных переменных, укажите ее, потому что я не могу придумать ни одной, и в любом случае трудно понять, как вы могли бы успешно написать свой код без ее использования.
Одна целочисленная переменная не может содержать более одного целого числа. Вам нужно объявить табличную переменную (или временную таблицу, в зависимости от ваших требований) и выбрать в ней свои данные. Вы можете выбрать более одного значения за раз, используя синтаксис INSERT INTO ... SELECT или SELECT INTO ....
Переменные, кроме табличных, являются скалярными. Они могут содержать 1 значение и только 1 значение.


Если вам нужна табличная переменная, используйте правильный синтаксис:
declare @XYZIds table (id Int);
insert into @XYZIds (id)
select ABCId
from ABCTable where ABCId in (1, 9, 18, 27);
Ваш вопрос не имеет смысла. Кажется, вы хотите присвоить значение целому числу. Но каким-то образом вы хотите, чтобы был назначен список значений?