Campos com varias informações tendo que passar cada informação para uma linha diferente
Bom dia Pessoal
Tenho um campo na tabela ZZ4 onde é informado mais de um registro como numero de notas ficais como no exemplo abaixo
UNT000148915 / UNT000148917 / UNT000148934 / 1 000299299 / 1 000299300 / 1 000299328
eu preciso que cada nota fiscal desta sejam mostrada em uma linha no sql, como posso fazer isso?
Consulta
SELECT
ZZ4_FILIAL,
ZZ4_DOCS,SUBSTRING(ZZ4_DOCS,1,3),SUBSTRING(ZZ4_DOCS,4,9),ZZ4_FORN,ZZ4_LOJA
FROM ZZ4010 WHERE ZZ4_FILIAL=''72'' AND ZZ4_DOCS LIKE(''%UNT000252535%'') AND D_E_L_E_T_=''''
Tenho um campo na tabela ZZ4 onde é informado mais de um registro como numero de notas ficais como no exemplo abaixo
UNT000148915 / UNT000148917 / UNT000148934 / 1 000299299 / 1 000299300 / 1 000299328
eu preciso que cada nota fiscal desta sejam mostrada em uma linha no sql, como posso fazer isso?
Consulta
SELECT
ZZ4_FILIAL,
ZZ4_DOCS,SUBSTRING(ZZ4_DOCS,1,3),SUBSTRING(ZZ4_DOCS,4,9),ZZ4_FORN,ZZ4_LOJA
FROM ZZ4010 WHERE ZZ4_FILIAL=''72'' AND ZZ4_DOCS LIKE(''%UNT000252535%'') AND D_E_L_E_T_=''''
Wanderson Fernandes
Curtidas 0
Respostas
Emerson Nascimento
24/01/2022
tente com o script abaixo.
você pode criar uma stored procedure com o script acima.
DECLARE @FILIAL VARCHAR(2) DECLARE @FORNECEDOR VARCHAR(6) DECLARE @LOJA VARCHAR(2) DECLARE @DOCS VARCHAR(255) DECLARE @DOC VARCHAR(12) DECLARE @POSBARRA INT DECLARE @TABTMP TABLE(FILIAL VARCHAR(2), NOTAFISCAL VARCHAR(12), FORNECEDOR VARCHAR(6), LOJA VARCHAR(2)) DECLARE CURSORTESTE CURSOR LOCAL FOR SELECT ZZ4_FILIAL, ZZ4_DOCS, ZZ4_FORN, ZZ4_LOJA FROM ZZ4010 WHERE D_E_L_E_T_='' AND ZZ4_FILIAL='72' -- SE STORED PROCEDURE, PODE SER UM PARÂMETRO AND ZZ4_DOCS LIKE '%UNT000252535%' -- SE STORED PROCEDURE, PODE SER UM PARÂMETRO OPEN CURSORTESTE SET NOCOUNT ON FETCH NEXT FROM CURSORTESTE INTO @FILIAL, @DOCS, @FORNECEDOR, @LOJA WHILE (@@FETCH_STATUS = 0) BEGIN SET @POSBARRA = CHARINDEX('/', @DOCS) WHILE (@POSBARRA > 0) BEGIN SET @DOC = SUBSTRING(@DOCS, 1, @POSBARRA-1) SET @DOCS = SUBSTRING(@DOCS, @POSBARRA+1, LEN(@DOCS)) INSERT INTO @TABTMP VALUES (@FILIAL, @DOC, @FORNECEDOR, @LOJA) -- AQUI É @DOC (SINGULAR) SET @POSBARRA = CHARINDEX('/', @DOCS) END INSERT INTO @TABTMP VALUES (@FILIAL, @DOCS, @FORNECEDOR, @LOJA) -- AQUI É @DOCS (PLURAL) FETCH NEXT FROM CURSORTESTE INTO @FILIAL, @DOCS, @FORNECEDOR, @LOJA END CLOSE CURSORTESTE DEALLOCATE CURSORTESTE SET NOCOUNT OFF SELECT * FROM @TABTMP
você pode criar uma stored procedure com o script acima.
GOSTEI 0
Wanderson Fernandes
24/01/2022
tente com o script abaixo.
você pode criar uma stored procedure com o script acima.
DECLARE @FILIAL VARCHAR(2) DECLARE @FORNECEDOR VARCHAR(6) DECLARE @LOJA VARCHAR(2) DECLARE @DOCS VARCHAR(255) DECLARE @DOC VARCHAR(12) DECLARE @POSBARRA INT DECLARE @TABTMP TABLE(FILIAL VARCHAR(2), NOTAFISCAL VARCHAR(12), FORNECEDOR VARCHAR(6), LOJA VARCHAR(2)) DECLARE CURSORTESTE CURSOR LOCAL FOR SELECT ZZ4_FILIAL, ZZ4_DOCS, ZZ4_FORN, ZZ4_LOJA FROM ZZ4010 WHERE D_E_L_E_T_='' AND ZZ4_FILIAL='72' -- SE STORED PROCEDURE, PODE SER UM PARÂMETRO AND ZZ4_DOCS LIKE '%UNT000252535%' -- SE STORED PROCEDURE, PODE SER UM PARÂMETRO OPEN CURSORTESTE SET NOCOUNT ON FETCH NEXT FROM CURSORTESTE INTO @FILIAL, @DOCS, @FORNECEDOR, @LOJA WHILE (@@FETCH_STATUS = 0) BEGIN SET @POSBARRA = CHARINDEX('/', @DOCS) WHILE (@POSBARRA > 0) BEGIN SET @DOC = SUBSTRING(@DOCS, 1, @POSBARRA-1) SET @DOCS = SUBSTRING(@DOCS, @POSBARRA+1, LEN(@DOCS)) INSERT INTO @TABTMP VALUES (@FILIAL, @DOC, @FORNECEDOR, @LOJA) -- AQUI É @DOC (SINGULAR) SET @POSBARRA = CHARINDEX('/', @DOCS) END INSERT INTO @TABTMP VALUES (@FILIAL, @DOCS, @FORNECEDOR, @LOJA) -- AQUI É @DOCS (PLURAL) FETCH NEXT FROM CURSORTESTE INTO @FILIAL, @DOCS, @FORNECEDOR, @LOJA END CLOSE CURSORTESTE DEALLOCATE CURSORTESTE SET NOCOUNT OFF SELECT * FROM @TABTMP
você pode criar uma stored procedure com o script acima.
Bom dia Emerson,
Deu certo muito obrigado pela ajuda.
GOSTEI 0