У меня есть одна таблица (SQL Server), в которой значения разделены запятыми в нескольких столбцах, как показано ниже:
Rule_ID ListType_ID Values
1 1,2 100,200
2 3,4 300,400
Я хочу разделить значения, разделенные запятыми, и преобразовать их в строки.
Требуемый вывод должен быть таким, как показано ниже:
Rule_ID ListType_ID Values
1 1 100
1 2 200
2 3 300
2 4 400
Я пробовал следующий запрос:
DECLARE @TEMP AS TABLE (
[Rule_ID] INT,
[ListType_ID] VARCHAR(MAX),
[Values] VARCHAR(MAX)
)
INSERT INTO @TEMP
SELECT 1, '1,2', '100,200'
UNION ALL
SELECT 2, '3,4', '300,400'
SELECT
[Rule_ID],
PARSENAME(REPLACE(Split1.b.value('.', 'VARCHAR(100)'),'-','.'),1) AS [ListType_ID],
PARSENAME(REPLACE(Split.a.value('.', 'VARCHAR(100)'),'-','.'),1) AS [Values]
FROM
(
SELECT [Rule_ID],
CAST ('<M>' + REPLACE([ListType_ID], ',', '</M><M>') + '</M>' AS XML) AS [ListType_ID],
CAST ('<M>' + REPLACE([Values], ',', '</M><M>') + '</M>' AS XML) AS [Values]
FROM @TEMP
) AS A
CROSS APPLY [Values].nodes ('/M') AS Split(a)
CROSS APPLY [ListType_ID].nodes ('/M') AS Split1(b)
ORDER BY [Rule_ID], [ListType_ID], [Values]
Этот запрос возвращает приведенный ниже вывод, который отличается оттребуемый вывод:
Rule_ID ListType_ID Values
1 1 100
1 1 200
1 2 100
1 2 200
2 3 300
2 3 400
2 4 300
2 4 400
Пожалуйста, помогите мне здесь .... !!!!