Дублировать и разделить строку на основе значения с помощью SQL-запроса? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть набор данных, и я хочу разделить несколько строк на основе значения столбца.

Например,

Исходные данные:

enter image description here

Ожидаемый результат:

enter image description here

Спасибо, Lawrance A

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Лучший и простой способ решения вышеуказанного -

Выберите значение в качестве UID, Имя, Возраст, Образование, Отдел

из StackSoln

Перекрестное применение string_split (UID, ',') *

STRING_SPLIT

Табличная функция, которая разбивает строку на строкиподстрок, основанных на указанном символе разделителя.

CROSS APPLY

возвращает только строки из внешней таблицы, которые генерируют набор результатов из табличной функции.Другими словами, результат CROSS APPLY не содержит ни одной строки левого выражения таблицы, для которой результат не получен из правого выражения таблицы.CROSS APPLY работает строка за строкой INNER JOIN

0 голосов
/ 15 марта 2019

Предполагается, что sql-server больше или равно версии 2016. Тогда можно использовать функцию string_split():

select spl.u_id, s.name us_uid, s.age col_1, s.dob col_2, s.education col_3, s.department col_4 from @source s
    cross apply( select value u_id from string_split( (select u_id from @source s2 where s2.u_id = s.u_id ),',')
                where CHARINDEX(value,s.u_id,1) > 0) spl 
...