Filtro utilizado dentro do left join

Tenho um select com dois left join trazendo a soma de duas tabelas.

fiz uma consulta que inicia no filtro, filtrando a data do select principal, mas preciso que o filtro seja aplicado dentro do left join.

como faço isso?

Crie uma view em cima de toda instrução select e crie a aplicação grid usando essa view

exemplo da minha sql
select codigo, nome, data_at from atendimento
left outer join
(
select codigo,data_v, sum(vendas) from vendas where periodo between ‘filtro pelo SC’ and ‘filtro pelo SC’ group by codigo,data_v
) vendas on atendimento.codigo = vendas.codigo
left outer join
where data_at between ‘filtro pelo SC’ and ‘filtro pelo SC’

preciso filtrar dois campos de datas difetentes, correto? mas o usuario digitasse apenas um periodo de data

Remove o subselect do From Left oiter Join e faz a junção de vendas direto com atendimento e jogue o sim(vendas) e demais campos no select e adicione os group by no final.

Inclusive vai melhorar a performance da instrução.

Se for resistente a sugestão, crie campos virtuais no filtro, no evento onscriptinit mova o valor dos Campos para globais SC e as utilize no SQL principal da coluna.

Outra sugestão é criar uma tabela com dados temporários, e usar essa tabela na grid.
A alimentação de dados nessa tabela deve se dar através de campos virtuais no filtro aplicados no select acima e o resultado alimentar a tabela sugerida.

não entendi bem, poderia me explicar melhor?

Foram 3 sugestões, não entendeu as 3?

Realmente não entendi, nada…

Sugestão 1:

SELECT a.codigo as Codigo, a.nome as Nome, a.data_at as Data_Atendimento, v.data_v as Data_Venda, SUM(v.vendas) as Total_Vendas
FROM atendimento a
LEFT OUTER JOIN vendas v  ON a.codigo = v.codigo
GROUP BY a.codigo,v.data_v

Crie filtros para Data_Atendimento (entre 2 valores) e Data_Venda (entre dois Valores) e Especiais a gosto mas de forma coerente.

Pergunta: Porque LEFT OUTER JOIN?

Criar dois filtros sendo que sempre irei pesquisar a mesma data, entendeu, fica incoerente,
exemplo: data atendimento //_ e //__
data da venda //_ e //__
o usuario tera sempre que digitar os mesmos valores, o que queria e o seguinte
periodo: //_ e //__ -> que o conteudo seja armazenado em variavel e eu referencie elas no select.

no select que montou acima não funciona pois preciso de varias validações na tabela de vendas tenho que fazer o calculo quando e devolução e tal, por isso o left outer join, pois alem de poder usar o select que preciso, entram todos os atendimentos que não tenham venda.

Você não apresentou o a instrução completa?

Não, isso eu digitei somente como conceito!

O fórum está instável…

Sempre é bom detalhar pois estudamos a questão para dar a sugestão.

Ainda acho que funciona sem subselect no From.

Mas só com uma base real e a regra de negócio a ser cumprida para realizar testes e ofertar uma solução plausível.

🚀 O Scriptcase 9.12 já está disponível! Veja as novidades aqui 👉🚀 Na próxima segunda (24/02), o Scriptcase 9.12 será lançado! Veja as novidades antes de todo mundo 👉