If e Else na consulta

06/04/2022

0

Boa Tarde Pessoal,

Estou precisando de uma ajuda na query onde estou tentando usar os comandos IF e Else, segue abaixo a query caso alguem possa me orientar de como resolver isso

--WARNING! ERRORS ENCOUNTERED DURING SQL PARSING!
SELECT ZB1FIL01.ZB1_CONTA AS CONTA
,SUM(SE2FIL01.E2_VALOR - SE2FIL01.E2_SDDECRE + SE2FIL01.E2_ACRESC - SE2FIL01.E2_DESCONT) AS VALOR
FROM ZB1010 ZB1FIL01(NOLOCK)
,SE2010 SE2FIL01(NOLOCK)
WHERE ZB1FIL01.D_E_L_E_T_ = ''''
AND SE2FIL01.D_E_L_E_T_ = ''''

IF ZB1FIL01.ZB1_GRUPO IN (
''G1''
,''M1''
)
AND SE2FIL01.E2_NATUREZ = ZB1FIL01.ZB1_CODNAT
AND ZB1FIL01.ZB1_STATUS = ''A''
AND SE2FIL01.E2_FILIAL IN (''01'')
AND SE2FIL01.E2_BAIXA BETWEEN ''20220301''
AND ''20220331'' ELSE
BEGIN
ZB1FIL01.ZB1_GRUPO IN (''M2'')
AND SE2FIL01.E2_NATUREZ <> ZB1FIL01.ZB1_CODNAT
END
GROUP BY ZB1FIL01.ZB1_CONTA

Nesta consulta eu preciso trazer todos os registros quando o grupo for G1/M1 e que o SE2FIL01.E2_NATUREZ = ZB1FIL01.ZB1_CODNAT e também
tenho que trazer todos os registro quando o grupo for M2 e SE2FIL01.E2_NATUREZ <> ZB1FIL01.ZB1_CODNAT
Wanderson Fernandes

Wanderson Fernandes

Responder

Posts

06/04/2022

Emerson Nascimento

tente assim:
SELECT
	ZB1.ZB1_CONTA AS CONTA,
	SUM(SE2.E2_VALOR - SE2.E2_SDDECRE + SE2.E2_ACRESC - SE2.E2_DESCONT) AS VALOR
FROM
	ZB1010 ZB1 (NOLOCK)
INNER JOIN
	SE2010 SE2 (NOLOCK) ON SE2.D_E_L_E_T_ = '' AND SE2.E2_FILIAL = '01'
	AND SE2.E2_BAIXA BETWEEN '20220301' AND '20220331'
	AND (
			(SE2.E2_NATUREZ = ZB1.ZB1_CODNAT AND ZB1.ZB1_GRUPO IN ('G1','M1'))
		OR
			(SE2.E2_NATUREZ <> ZB1.ZB1_CODNAT AND ZB1.ZB1_GRUPO = 'M2')
		)
WHERE
	ZB1.D_E_L_E_T_ = '' -- CADÊ O FILTRO DA FILIAL DA ZB1 ???
	AND ZB1.ZB1_STATUS = 'A'
GROUP BY
	ZB1.ZB1_CONTA

Responder

06/04/2022

Wanderson Fernandes

tente assim:
SELECT
	ZB1.ZB1_CONTA AS CONTA,
	SUM(SE2.E2_VALOR - SE2.E2_SDDECRE + SE2.E2_ACRESC - SE2.E2_DESCONT) AS VALOR
FROM
	ZB1010 ZB1 (NOLOCK)
INNER JOIN
	SE2010 SE2 (NOLOCK) ON SE2.D_E_L_E_T_ = '' AND SE2.E2_FILIAL = '01'
	AND SE2.E2_BAIXA BETWEEN '20220301' AND '20220331'
	AND (
			(SE2.E2_NATUREZ = ZB1.ZB1_CODNAT AND ZB1.ZB1_GRUPO IN ('G1','M1'))
		OR
			(SE2.E2_NATUREZ <> ZB1.ZB1_CODNAT AND ZB1.ZB1_GRUPO = 'M2')
		)
WHERE
	ZB1.D_E_L_E_T_ = '' -- CADÊ O FILTRO DA FILIAL DA ZB1 ???
	AND ZB1.ZB1_STATUS = 'A'
GROUP BY
	ZB1.ZB1_CONTA



Emerson,

Muito obrigado pela ajuda deu certinho
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar