Usuário com melhor resposta
UNINDO TABELA DE DATAS COM VENDAS

Pergunta
-
Pessoal estou patinando pra fazer uma query aqui. Se alguem puder me ajudar agradeço muito.
Tenho duas tabelas, uma de datas contabeis, e uma de vendas.
EX:
Tabela 1
DATA(Primeiro dia de cada mes)
20200101
20200201
20200301
Tabela 2
VENDAS DE VENDEDORES
NOME QTD TOTAL DATA
JOAO 6 900 20200101
LUIZ 10 1700 20200101
PAULO 5 560 20200101
LUIZA 20 3100 20200101
RESULTADO DESEJADO UNINDO AS 2 TABELAS
DATA NOME QTD TOTAL
20200101 JOAO 6 900
20200101 LUIZ 10 1700
20200101 PAULO 5 560
20200101 LUIZA 20 3100
20200201 JOAO 0 0
20200201 LUIZ 0 0
20200201 PAULO 0 0
20200201 LUIZA 0 0
20200301 JOAO 0 0
20200301 LUIZ 0 0
20200301 PAULO 0 0
20200301 LUIZA 0 0
OBS: Preciso usar como base a data da primeira tabela, pois se nao tiver nenhuma movimentacao daquela data na tabela de vendas preciso do mesmo jeito trazer os vendedores só que com 0Desde ja Agradeço
Respostas
-
Acho que você pode utilizar um Cross Join entre as tabela de datas e vendedores para obter as combinações possíveis, e depois um Left Join para buscar uma possível venda para as combinações obtidas. Ex:
select dt.Data, ve.IdVendedor, ve.NomeVendedor, vv.Qtd, vv.Total from TabDatas as dt cross join TabVendedores as ve left join TabVendas as vv on vv.IdVendedor = ve.IdVendedor and vv.Data = dt.Data
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Alemaum5062 quinta-feira, 20 de agosto de 2020 15:02
Todas as Respostas
-
-
Bom DIa gapimex tenho sim
Na verdade a query é bem mais complexa, dei um exemplo de vendedores para ficar mais facil de entender. Mas tenho ela sim
- Editado Alemaum5062 quinta-feira, 20 de agosto de 2020 14:18
-
Acho que você pode utilizar um Cross Join entre as tabela de datas e vendedores para obter as combinações possíveis, e depois um Left Join para buscar uma possível venda para as combinações obtidas. Ex:
select dt.Data, ve.IdVendedor, ve.NomeVendedor, vv.Qtd, vv.Total from TabDatas as dt cross join TabVendedores as ve left join TabVendas as vv on vv.IdVendedor = ve.IdVendedor and vv.Data = dt.Data
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Alemaum5062 quinta-feira, 20 de agosto de 2020 15:02
-
-
Show, vou testar aqui e te falo... obrigado
Alemaun5062,
Gostaria somente de fazer uma observação: Valide o uso do Cross Join como o Gapimex sugeriu, mas inicialmente com uma quantidade limitada de dados, pois dependendo do massa existente em cada tabela, você poderá se deparar com alguns gargalos de processamento.
Faça uso do comando Top ou da cláusula Where no seu Select como uma forma de teste, dando tudo certo, faça a implementação.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-