Fórum If e Else na consulta #617880

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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

Gostei + 0

06/04/2022

Wanderson Fernandes

tente assim:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

Ler Mais...



Emerson,

Muito obrigado pela ajuda deu certinho
Responder

Gostei + 0

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

Aceitar