Как заменить строку идентификаторов данными, подключенными к этим идентификаторам в SELECT - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть 2 таблицы. В первой таблице есть столбец «EmployeeIds», представляющий собой строку с набором идентификаторов, разделенных запятыми (например: «4124,2945,2873,4047,3046,4774»).

Вторая таблица имеет эти идентификаторы в качестве своей идентификации (EmployeeID), а также имена, связанные с этими этими идентификаторами.

Я хочу выбрать, где я перечисляю все из таблицы1, но вместо идентификаторов в столбце EmployeeIds я хочу видеть имена, которые связаны с этими идентификаторами.

SELECT name from Table2
WHERE EmployeeID CAST(EmployeeID AS int) IN (SELECT EmployeeIds FROM Table1)

Я получил сообщение об ошибке: «Преобразование не удалось при преобразовании значения varchar '4124,2945,2873,4047,3046,4774' в тип данных int."

Я знаю, что приведенный выше код не вернет все, что мне нужно, потому что мне нужно объединить его и с Таблицей 1, но я работаю изнутри, и я уже застрял здесь.

1 Ответ

0 голосов
/ 29 апреля 2019

Если вы используете SQL Server 2016, вы можете сделать это:

DECLARE @s varchar(1000)
SELECT @s=EmployeeIds FROM Table1
SELECT name from Table2
JOIN STRING_SPLIT(@s,',') ON value=CAST(EmployeeID AS int)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...