none
UNINDO TABELA DE DATAS COM VENDAS RRS feed

  • 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 0

    Desde ja Agradeço


    quinta-feira, 20 de agosto de 2020 13:04

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
    quinta-feira, 20 de agosto de 2020 14:48

Todas as Respostas

  • Bom dia,

    Você tem também uma tabela de vendedores?


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 20 de agosto de 2020 13:45
  • 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
    quinta-feira, 20 de agosto de 2020 14:17
  • 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
    quinta-feira, 20 de agosto de 2020 14:48
  • Show, vou testar aqui e te falo... obrigado
    quinta-feira, 20 de agosto de 2020 14:58
  • 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]

    quinta-feira, 20 de agosto de 2020 19:26
  • Muito Obrigado Junior

    Muito Obrigado Gapimex

    Consegui aqui.... Vlw

    sexta-feira, 21 de agosto de 2020 12:31