If e Else na consulta
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
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
Curtidas 0
Respostas
Emerson Nascimento
06/04/2022
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
GOSTEI 0
Wanderson Fernandes
06/04/2022
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
GOSTEI 0