Fórum Campos com varias informações tendo que passar cada informação para uma linha diferente #617517
24/01/2022
0
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
Curtir tópico
+ 0
Responder
Posts
26/01/2022
Emerson Nascimento
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 @TABTMPvocê pode criar uma stored procedure com o script acima.
Responder
Gostei + 0
28/02/2022
Wanderson Fernandes
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 @TABTMPvocê pode criar uma stored procedure com o script acima.
Bom dia Emerson,
Deu certo muito obrigado pela ajuda.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)