× Linguagem de Programação ADVPL

Perguntas Ajuda Query

Mais
9 anos 1 semana atrás #29774 por rodrigo.simoes
Ajuda Query foi criado por rodrigo.simoes
Pessoal, boa tarde !

Estou com um problema em uma query, onde ele não respeita a condição informada.

No trecho do join, eu não quero que ele puxe os registros da E5_MOTBX = 'DEV'

Porém ele não respeita a condição.

Alguém tem uma luz, por favor.

Abaixo a query

SELECT
CONVERT(VARCHAR(10),CAST (A.E1_BAIXA AS DATE),103) As 'DATA DA BAIXA',
A.E1_CLIENTE As 'CODIGO DO CLIENTE',
A.E1_NOMCLI As 'NOME CLIENTE' ,
A.E1_LOJA As 'LOJA' ,
A.E1_NUM As 'NUMERO DO TITULO' ,
A.E1_PREFIXO As 'SERIE' ,
A.E1_TIPO As 'TIPO' ,
B.E5_TIPODOC As 'TIPO DOC',
B.E5_MOTBX As 'MOTIVO DA BAIXA',
B.E5_HISTOR As 'HISTORICO DA NOTA',
A.E1_HIST As 'HISTORICO LANÇAMENTO',

CASE WHEN A.E1_MULTNAT=1 THEN 'S' ELSE 'N' End As 'MULTINATUREZA',
C.EV_PERC As 'PORCENTAGEM MULTINARUREZA',
CASE WHEN A.E1_MULTNAT=1 THEN C.EV_NATUREZ ELSE A.E1_NATUREZ End As 'NATUREZA',

CASE
WHEN B.E5_TIPODOC = 'VL' AND A.E1_TIPO = 'NF' THEN A.E1_VALOR
ELSE NULL END As 'VALOR BRUTO' ,

CASE
WHEN B.E5_TIPODOC ='DC' THEN B.E5_VALOR * -1
WHEN B.E5_TIPODOC ='ES' THEN A.E1_VALOR * -1
WHEN B.E5_TIPODOC IN ('JR', 'MT') THEN B.E5_VALOR
WHEN A.E1_MULTNAT= 1 AND RIGHT(A.E1_TIPO,1) = '-' THEN C.EV_VALOR * - 1
WHEN A.E1_MULTNAT= 1 THEN C.EV_VALOR
WHEN RIGHT(A.E1_TIPO,1) = '-' THEN A.E1_VALOR * - 1
WHEN B.E5_VALOR = '0' THEN B.E5_VALOR
ELSE A.E1_VALOR-A.E1_SALDO END As 'VALOR LIQUIDO' ,

B.E5_BANCO As 'BANCO' ,
B.E5_AGENCIA As 'AGENCIA' ,
B.E5_CONTA As 'CONTA' ,

CONVERT(VARCHAR(10),CAST (A.E1_EMISSAO AS DATE),103) As 'DATA DE EMISSAO' ,
CONVERT(VARCHAR(10),CAST (A.E1_VENCREA AS DATE),103) As 'VENCIMENTO REAL' ,
A.E1_FILORIG As 'FILIAL',
E1_BAIXA As DATA ---- Facilitar filtro de data no excel

FROM SE1010 As A --- (SE1) Tabela de Contas a Receber
LEFT JOIN (SELECT * FROM SE5010 WHERE E5_RECPAG = 'R' OR (E5_RECPAG = 'P' AND E5_TIPODOC = 'ES') AND E5_SITUACA <> 'C' AND D_E_L_E_T_ <> '*') As B --- (SE5) Tabela de Movimentações Bancarias
ON (A.E1_NUM = B.E5_NUMERO AND A.E1_PREFIXO = B.E5_PREFIXO AND A.E1_TIPO = B.E5_TIPO AND A.E1_CLIENTE = B.E5_CLIENTE AND A.E1_LOJA = B.E5_LOJA AND A.E1_BAIXA = B.E5_DATA AND A.E1_PARCELA = B.E5_PARCELA) AND B.D_E_L_E_T_ <> '*'
LEFT JOIN (SELECT * FROM SEV010 WHERE EV_RECPAG = 'R' AND D_E_L_E_T_ = '' ) As C --- (SEV) Tabela de Multinatureza
ON A.E1_NUM = C.EV_NUM AND A.E1_PREFIXO = C.EV_PREFIXO AND A.E1_CLIENTE = C.EV_CLIFOR AND A.E1_TIPO = C.EV_TIPO AND C.D_E_L_E_T_ <> '*'

WHERE
A.E1_BAIXA = '20150115'
AND A.D_E_L_E_T_ = ''
AND A.E1_NATUREZ <> '5114001' -- INCLUIDO PARA NÃO CONSIDERAR OS MUTUOS.
AND A.E1_NOMCLI = 'MDS'

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 1 semana atrás #29780 por kanaamlrr
Respondido por kanaamlrr no tópico Ajuda Query
Tente assim:
SELECT
CONVERT(VARCHAR(10),CAST (A.E1_BAIXA AS DATE),103) As 'DATA DA BAIXA',
A.E1_CLIENTE As 'CODIGO DO CLIENTE',
A.E1_NOMCLI As 'NOME CLIENTE' ,
A.E1_LOJA As 'LOJA' ,
A.E1_NUM As 'NUMERO DO TITULO' ,
A.E1_PREFIXO As 'SERIE' ,
A.E1_TIPO As 'TIPO' ,
B.E5_TIPODOC As 'TIPO DOC',
B.E5_MOTBX As 'MOTIVO DA BAIXA',
B.E5_HISTOR As 'HISTORICO DA NOTA',
A.E1_HIST As 'HISTORICO LANÇAMENTO',

CASE WHEN A.E1_MULTNAT=1 THEN 'S' ELSE 'N' End As 'MULTINATUREZA',
C.EV_PERC As 'PORCENTAGEM MULTINARUREZA',
CASE WHEN A.E1_MULTNAT=1 THEN C.EV_NATUREZ ELSE A.E1_NATUREZ End As 'NATUREZA',

CASE
WHEN B.E5_TIPODOC = 'VL' AND A.E1_TIPO = 'NF' THEN A.E1_VALOR
ELSE NULL END As 'VALOR BRUTO' ,

CASE
WHEN B.E5_TIPODOC ='DC' THEN B.E5_VALOR * -1
WHEN B.E5_TIPODOC ='ES' THEN A.E1_VALOR * -1
WHEN B.E5_TIPODOC IN ('JR', 'MT') THEN B.E5_VALOR
WHEN A.E1_MULTNAT= 1 AND RIGHT(A.E1_TIPO,1) = '-' THEN C.EV_VALOR * - 1
WHEN A.E1_MULTNAT= 1 THEN C.EV_VALOR
WHEN RIGHT(A.E1_TIPO,1) = '-' THEN A.E1_VALOR * - 1
WHEN B.E5_VALOR = '0' THEN B.E5_VALOR
ELSE A.E1_VALOR-A.E1_SALDO END As 'VALOR LIQUIDO' ,

B.E5_BANCO As 'BANCO' ,
B.E5_AGENCIA As 'AGENCIA' ,
B.E5_CONTA As 'CONTA' ,

CONVERT(VARCHAR(10),CAST (A.E1_EMISSAO AS DATE),103) As 'DATA DE EMISSAO' ,
CONVERT(VARCHAR(10),CAST (A.E1_VENCREA AS DATE),103) As 'VENCIMENTO REAL' ,
A.E1_FILORIG As 'FILIAL',
E1_BAIXA As DATA ---- Facilitar filtro de data no excel

FROM SE1010 As A --- (SE1) Tabela de Contas a Receber
LEFT JOIN SE5010 As B --- (SE5) Tabela de Movimentações Bancarias
ON (A.E1_NUM = B.E5_NUMERO AND A.E1_PREFIXO = B.E5_PREFIXO AND A.E1_TIPO = B.E5_TIPO AND A.E1_CLIENTE = B.E5_CLIENTE AND A.E1_LOJA = B.E5_LOJA AND A.E1_BAIXA = B.E5_DATA AND A.E1_PARCELA = B.E5_PARCELA) AND B.D_E_L_E_T_ <> '*' AND E5_RECPAG = 'R' OR (E5_RECPAG = 'P' AND E5_TIPODOC = 'ES') AND E5_SITUACA <> 'C' AND E5_MOTBX <> 'DEV'
LEFT JOIN SEV010 As C --- (SEV) Tabela de Multinatureza
ON A.E1_NUM = C.EV_NUM AND A.E1_PREFIXO = C.EV_PREFIXO AND A.E1_CLIENTE = C.EV_CLIFOR AND A.E1_TIPO = C.EV_TIPO AND C.D_E_L_E_T_ <> '*' AND EV_RECPAG = 'R' 

WHERE
A.E1_BAIXA = '20150115'
AND A.D_E_L_E_T_ = ''
AND A.E1_NATUREZ <> '5114001' -- INCLUIDO PARA NÃO CONSIDERAR OS MUTUOS.
AND A.E1_NOMCLI = 'MDS'

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 1 semana atrás #29797 por rodrigo.simoes
Respondido por rodrigo.simoes no tópico Ajuda Query
Kanaãm, bom dia !

Da forma que você passou o resultado é o mesmo.

O problema esta na questão do left join, por isso ele mostra o tipo DEV.

Estou montando esta query para jogar em um relatório, onde consiga extrair as informações de todos os impostos e abatimentos dos títulos.

Seria um relatório parecido com a relação de Baixas, porém sem aglutinar os valores de impostos e abatimentos.

Talvez você tenha alguma idéia diferente.

Agradeço a ajuda.

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 1 semana atrás #29798 por henry.charriere
Respondido por henry.charriere no tópico Ajuda Query
Rodrigo, boa tarde!

Na tabela SE5 vc tem todos os registros, se quiser filtrar apensar Contas a Receber pode fazer isso, se quiser somente o que foi conciliado tb.

Sugiro que começe com ela e não pela SE1.


Atenciosamente,
Henry

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 6 dias atrás #29800 por rodrigo.simoes
Respondido por rodrigo.simoes no tópico Ajuda Query
Henry, boa tarde !

Então, o problema que na SE5 eu tenho apenas o título da baixa (NF).

Preciso saber deste título o que foi imposto e esta informação estou trazendo da SE1 com os titulos de tipo com sinal de (-), CF-, CS-,IN-.

Iniciando pela E5 não consigo trazer estes titulos para realizar os devidos abatimentos.

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 5 dias atrás - 9 anos 5 dias atrás #29808 por henry.charriere
Respondido por henry.charriere no tópico Ajuda Query
Rodrigo, boa tarde!

Os títulos tem que ser conciliados, então eles devem aparecer na SE5.
Se não faz uma sub consulta.

select
campos,
(select valor from se1 where campos de relacionamento) cf,
(select valor from se1 where campos de relacionamento) cs,
(select valor from se1 where campos de relacionamento) in
from se5
Ultima edição: 9 anos 5 dias atrás por henry.charriere.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.120 segundos
Joomla templates by a4joomla