Возвращает строку описания заданной строки идентификаторов (разделенных запятыми) - PullRequest
0 голосов
/ 28 октября 2009

У меня есть одна таблица A, в которой есть столбец C и таблица поиска (lookup), которая предоставляет описание с указанным идентификатором. Вот настройки:

table A with column C values:

1,2,3
2,3,4

table lookup:
1, 'This'
2, 'is'
3, 'tricky'
4, 'SQL'

Укажите оператор SQL (SQL Server 2005), который возвращает следующие строки:

Input: 1,2,3    Output: 'This','Is','tricky'
Input: 2,3,4    Output: 'Is','tricky','SQL'

в основном превращает строку идентификаторов (из входной таблицы A) в строку описаний

1 Ответ

0 голосов
/ 28 октября 2009

Примеры, поставляемые с SQL Server 2005, включают функцию CLR, которая называется Split (). На сегодняшний день это лучший способ разделения разделенных запятыми списков.

Предположим, у вас есть таблица с именем inputs и столбцом с именем input.

Я забыл, что конкретно представляет собой dbo.Split () ... так что работайте со мной здесь. Давайте назовем поля id и val, где id говорит нам, какая запись находится в списке.

WITH
separated AS (
   SELECT i.input, s.id, s.val
   FROM 
       dbo.inputs AS i 
       CROSS APPLY 
       dbo.Split(i.input) AS s
)
, converted AS (
    SELECT s.input, s.id, m.string
    FROM 
        separated AS s
        JOIN
        dbo.mapping AS m
            ON m.number = CAST(s.val AS varchar(5))
)
SELECT c.input, (SELECT string + ' ' FROM converted AS c2 WHERE c2.input = c.input ORDER BY id FOR XML PATH('')) AS converted_string
FROM converted AS c
GROUP BY c.input;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...