Usuário com melhor resposta
Como faço para o retorno do STRING_SPLIT ser em diversas colunas ao invés de ser 1 coluna com diversas linhas.

Pergunta
-
Bom dia!
Pessoal preciso da ajuda de vocês.
Atualmente utilizo o MSSQL17 e terei que utilizar o comando [SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ')] porém preciso desses resultados em uma única linha com diversas colunas atualmente o sistema me retorna uma única coluna com diversas linhas:
Exemplos:
O que tenho atualmente
Lorem
ipsum
dolor
sit
amet.E como gostaria em colunas:
Lorem ipsum dolor sit amet.
Se alguém conseguir me ajudar ficarei muito grato, abraços
Respostas
-
Boa noite Fernando, é possível fazer de duas formas, utilizando SQL dinâmico ou utilizando o PIVOT, o problema do pivot é que os dados ficam harcode, assim deixo um exemplo em SQL Dinâmico:
DECLARE @cmd VarChar(MAX) = 'SELECT ' SELECT @cmd += QUOTENAME(CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VarChar(10))) + ' = ' + CHAR(39) + value + CHAR(39) + ',' FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ') SELECT @cmd = SUBSTRING(@cmd, 1, LEN(@cmd) - 1) EXEC(@cmd);
Obrigado.
Todas as Respostas
-
-
Boa noite Fernando, é possível fazer de duas formas, utilizando SQL dinâmico ou utilizando o PIVOT, o problema do pivot é que os dados ficam harcode, assim deixo um exemplo em SQL Dinâmico:
DECLARE @cmd VarChar(MAX) = 'SELECT ' SELECT @cmd += QUOTENAME(CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VarChar(10))) + ' = ' + CHAR(39) + value + CHAR(39) + ',' FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ') SELECT @cmd = SUBSTRING(@cmd, 1, LEN(@cmd) - 1) EXEC(@cmd);
Obrigado.
-
Bom dia , Como vc usa o Sql Server 2017 não vejo problema de usar a função String_Agg
segue o exemplo
SELECT String_Agg(value, ' ') FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' '); SELECT STRING_AGG(CONCAT(FirstName, ' ', LastName, ' (', ModifiedDate, ')'), CHAR(13)) AS names FROM Person.Person;
WITH Eu AS (SELECT *
FROM
(
VALUES
(CONCAT('Wesley Neves ', '#', '.NET Developer')),
(CONCAT('M®CSA SQL 2016 Database Development', ' # ', 'MTA-SQL Server',' # ','MCP')),
('Pós Graduado em Banco de Dados com ênfase em BI'),
('Pós Graduando em Big Data e Analytics')
) AS X (value)
)
SELECT *
FROM Eu;
Wesley Neves
- Editado Wesley Neves quarta-feira, 27 de fevereiro de 2019 12:47 Correção