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_CONTAGOSTEI 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_CONTAEmerson,
Muito obrigado pela ajuda deu certinho
GOSTEI 0