(DRAFT) Realizando “UNPIVOT” de texto concatenado:

Criando a tabela para a demonstração:

CREATE TABLE TAB (CentroDeCusto VARCHAR(100), Pedido VARCHAR(4))
GO
INSERT INTO TAB
VALUES ('0012/0258/0255','0222')
GO
INSERT INTO TAB
VALUES ('0032/6369/5255/8541','0223')
GO

Para SQL Server 2005 e 2008, criando uma função de split:

CREATE FUNCTION SPLIT (@Texto VARCHAR(100), @Delimitador CHAR)
RETURNS @Resultado TABLE
(
Final VARCHAR(100) NOT NULL
)
AS
BEGIN
;WITH _SPLIT(ID, _INDEX, _LENGTH) AS
(
SELECT
1,
1,
CHARINDEX(@Delimitador, @Texto + @Delimitador)
UNION ALL
SELECT
ID + 1,
_LENGTH + 1,
CHARINDEX(@Delimitador, @Texto + @Delimitador, _LENGTH + 1)
FROM _SPLIT
WHERE CHARINDEX(@Delimitador, @Texto + @Delimitador, _LENGTH + 1) <> 0
)
, _SPLIT2 (Id, Valores) AS
(
SELECT
ID,
SUBSTRING(@Texto, _INDEX, _LENGTH - _INDEX)
FROM _SPLIT
)
INSERT INTO @Resultado
SELECT Valores FROM _SPLIT2
RETURN
END;
GO

Para SQL Server 2005 e 2008, executando utilizando CROSS APPLY:

SELECT TAB2.Final AS CentroDeCusto, TAB.Pedido
FROM TAB
CROSS APPLY (SELECT Final FROM SPLIT(CentroDeCusto, '/')) AS TAB2

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s