Я не думаю, что T-SQL допускает синтаксис списка, который делает DB2.
Как отмечает Андрей М, SQL 2008+ допускает довольно похожий синтаксис:
WITH Selected_Users(id) AS (
SELECT Id FROM (
VALUES (@id1), (@id2), --etc--
) AS V(Id)
),
....
Или вы можете создать реальную временную таблицу (или переменную):
DECLARE @selected_Users TABLE (id int);
INSERT @selected_Users VALUES
(@id1),
(@id2),
--etc.--
; --make sure to close with semi-colon before WITH CTE
и затем замените Selected_Users
на @selected_Users
в оставшейся части запроса. Или измените начальный CTE на:
WITH Selected_Users(id) AS (
SELECT * FROM @selected_Users
),
....
Или вы можете сделать UNION ALL
:
WITH Selected_Users(id) AS (
SELECT @id1
UNION ALL SELECT @id2
UNION ALL SELECT @id3
--etc.--
),
....