Eu sei que existem vários exemplos de como dividir strings no SQL Server. No entanto, eles geralmente são para uma única string delimitada. Qual é a melhor maneira de dividir várias strings delimitadas sem usar uma função (SQL Server 2016)?
Aqui está o que eu estou começando:
GroupId Val1 Val2
----------- --------- ------
G1 1,2,3 a,b,c
G2 4,5,6 d,e,f
G3 1,2,3,4 w,x,y,z
Aqui está o que eu gostaria de terminar com:
GroupId Val1 Val2
------- ------- -------
G1 1 a
G1 2 b
G1 3 c
G2 4 d
G2 5 e
G2 6 f
G3 1 w
G3 2 x
G3 3 y
G3 4 z
Com base em tudo o que li, acho que posso precisar usar o método XML porque ele me permite especificar uma ordem, mas não consegui encontrar um exemplo desse método em que várias colunas sejam divididas.
Aqui está o T-SQL para criar a tabela de origem:
DROP TABLE IF EXISTS #TestData;
CREATE TABLE #TestData(GroupId VARCHAR(10),
Val1 VARCHAR(100),
Val2 VARCHAR(100)
);
INSERT INTO #TestData
VALUES ('G1', '1,2,3', 'a,b,c'),
('G2', '4,5,6', 'd,e,f'),
('G3', '1,2,3,4', 'w,x,y,z');
SELECT *
FROM #TestData;
Agradeço antecipadamente!
Transforme a string delimitada em uma matriz JSON e use OPENJSON, que expõe a ordenação léxica das matrizes. por exemplo
este
saídas
Então
saídas