Tenho 2 consulta em uma caso um retorne vazio executa update da outra
Bom dia Pessoal,
Estou precisando da ajuda de voce para criar uma consulta onde tenho 2 analista se na primeira analisa retorna verdadeiro executa um update caso contrario analisa a segunda consulta tem dados executa o update, segue abaixo uma consulta que estou tentando fazer isso funcionar mas não estou conseguindo se alguem puder me ajudar.
DECLARE @CPOFILIAL VARCHAR(2)
DECLARE @CPONOTA VARCHAR(9)
SET @CPOFILIAL = '70'
SET @CPONOTA = '000183671'
-- Entrada
If SELECT ISNULL((
SELECT F1_HORA
- FROM SF1010(NOLOCK)
WHERE F1_HORA = ''
AND D_E_L_E_T_ = ''
AND F1_FILIAL = @CPOFILIAL
AND F1_DOC = @CPONOTA
), UPDATE SF1010 SET F1_HORA = '' WHERE
AND D_E_L_E_T_ = ''
AND F1_FILIAL = @CPOFILIAL
AND F1_DOC = @CPONOTA,
)
---- Saida
SELECT F2_HORA
FROM SF2010(NOLOCK)
WHERE F2_HORA = ''
AND D_E_L_E_T_ = ''
AND F2_FILIAL = @CPOFILIAL
AND F2_DOC = @CPONOTA
--IF Entrada FOR vazio verifica Saida e se encontrar a nota faz o UPDATE
--UPDATE SF1010 SET F1_HORA ='' WHERE AND D_E_L_E_T_='' AND F1_FILIAL =@CPOFILIAL AND F1_DOC = @CPONOTA
--UPDATE SF2010 SET F2_HORA ='' WHERE AND D_E_L_E_T_='' AND F2_FILIAL =@CPOFILIAL AND F2_DOC = @CPONOTA
Estou precisando da ajuda de voce para criar uma consulta onde tenho 2 analista se na primeira analisa retorna verdadeiro executa um update caso contrario analisa a segunda consulta tem dados executa o update, segue abaixo uma consulta que estou tentando fazer isso funcionar mas não estou conseguindo se alguem puder me ajudar.
DECLARE @CPOFILIAL VARCHAR(2)
DECLARE @CPONOTA VARCHAR(9)
SET @CPOFILIAL = '70'
SET @CPONOTA = '000183671'
-- Entrada
If SELECT ISNULL((
SELECT F1_HORA
- FROM SF1010(NOLOCK)
WHERE F1_HORA = ''
AND D_E_L_E_T_ = ''
AND F1_FILIAL = @CPOFILIAL
AND F1_DOC = @CPONOTA
), UPDATE SF1010 SET F1_HORA = '' WHERE
AND D_E_L_E_T_ = ''
AND F1_FILIAL = @CPOFILIAL
AND F1_DOC = @CPONOTA,
)
---- Saida
SELECT F2_HORA
FROM SF2010(NOLOCK)
WHERE F2_HORA = ''
AND D_E_L_E_T_ = ''
AND F2_FILIAL = @CPOFILIAL
AND F2_DOC = @CPONOTA
--IF Entrada FOR vazio verifica Saida e se encontrar a nota faz o UPDATE
--UPDATE SF1010 SET F1_HORA ='' WHERE AND D_E_L_E_T_='' AND F1_FILIAL =@CPOFILIAL AND F1_DOC = @CPONOTA
--UPDATE SF2010 SET F2_HORA ='' WHERE AND D_E_L_E_T_='' AND F2_FILIAL =@CPOFILIAL AND F2_DOC = @CPONOTA
Wanderson Fernandes
Curtidas 0
Respostas
Emerson Nascimento
10/08/2022
respondendo o que você perguntou:
mas não bastaria somente atualizar, sem necessidade de IFs?
DECLARE @CPOFILIAL VARCHAR(2) DECLARE @CPONOTA VARCHAR(9) SET @CPOFILIAL = '70' SET @CPONOTA = '000183671' -- Entrada IF EXISTS( SELECT F1_HORA FROM SF1010(NOLOCK) WHERE D_E_L_E_T_ = '' AND F1_FILIAL = @CPOFILIAL AND F1_DOC = @CPONOTA AND F1_HORA > '' ) UPDATE SF1010 SET F1_HORA = '' WHERE D_E_L_E_T_ = '' AND F1_FILIAL = @CPOFILIAL AND F1_DOC = @CPONOTA ELSE IF EXISTS( SELECT F2_HORA FROM SF2010(NOLOCK) WHERE D_E_L_E_T_ = '' AND F2_FILIAL = @CPOFILIAL AND F2_DOC = @CPONOTA AND F2_HORA > '' ) UPDATE SF2010 SET F2_HORA = '' WHERE D_E_L_E_T_ = '' AND F2_FILIAL = @CPOFILIAL AND F2_DOC = @CPONOTA
mas não bastaria somente atualizar, sem necessidade de IFs?
DECLARE @CPOFILIAL VARCHAR(2) DECLARE @CPONOTA VARCHAR(9) UPDATE SF1010 SET F1_HORA = '' WHERE D_E_L_E_T_ = '' AND F1_FILIAL = @CPOFILIAL AND F1_DOC = @CPONOTA AND F1_HORA > '' UPDATE SF2010 SET F2_HORA = '' WHERE D_E_L_E_T_ = '' AND F2_FILIAL = @CPOFILIAL AND F2_DOC = @CPONOTA AND F2_HORA > ''
GOSTEI 0
Wanderson Fernandes
10/08/2022
respondendo o que você perguntou:
mas não bastaria somente atualizar, sem necessidade de IFs?
DECLARE @CPOFILIAL VARCHAR(2) DECLARE @CPONOTA VARCHAR(9) SET @CPOFILIAL = '70' SET @CPONOTA = '000183671' -- Entrada IF EXISTS( SELECT F1_HORA FROM SF1010(NOLOCK) WHERE D_E_L_E_T_ = '' AND F1_FILIAL = @CPOFILIAL AND F1_DOC = @CPONOTA AND F1_HORA > '' ) UPDATE SF1010 SET F1_HORA = '' WHERE D_E_L_E_T_ = '' AND F1_FILIAL = @CPOFILIAL AND F1_DOC = @CPONOTA ELSE IF EXISTS( SELECT F2_HORA FROM SF2010(NOLOCK) WHERE D_E_L_E_T_ = '' AND F2_FILIAL = @CPOFILIAL AND F2_DOC = @CPONOTA AND F2_HORA > '' ) UPDATE SF2010 SET F2_HORA = '' WHERE D_E_L_E_T_ = '' AND F2_FILIAL = @CPOFILIAL AND F2_DOC = @CPONOTA
mas não bastaria somente atualizar, sem necessidade de IFs?
DECLARE @CPOFILIAL VARCHAR(2) DECLARE @CPONOTA VARCHAR(9) UPDATE SF1010 SET F1_HORA = '' WHERE D_E_L_E_T_ = '' AND F1_FILIAL = @CPOFILIAL AND F1_DOC = @CPONOTA AND F1_HORA > '' UPDATE SF2010 SET F2_HORA = '' WHERE D_E_L_E_T_ = '' AND F2_FILIAL = @CPOFILIAL AND F2_DOC = @CPONOTA AND F2_HORA > ''
Boa Tarde Emerson,
Muito obrigado pela ajuda, rodou certinho.
GOSTEI 0