Tenho 2 consulta em uma caso um retorne vazio executa update da outra

SQL

10/08/2022

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
Wanderson Fernandes

Wanderson Fernandes

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

10/08/2022

respondendo o que você perguntou:
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

Wanderson Fernandes

10/08/2022

respondendo o que você perguntou:
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
POSTAR