none
Count de dois campos e tabelas diferentes RRS feed

  • Pergunta

  • Bom dia a todos,

    Tenho o seguinte caso: são duas tabelas diferentes e quero fazer um count de uma informação de cada tabela e o relacionamento que quero fazer destas tabelas é pelo vendedor:

    Tabela 1 (SC5010 - Pedidos)

    Vendedor - C5_VEND

    Quantidade Pedidos - count(C5_NUM) - C5_NUM = Código do Pedido

    Tabela 2 (SF2010 - NFe)

    Vendedor - F2_VEND

    Quantidade NFe - count(F2_DOC) - F2_DOC = Num NFe

    O que quero fazer é contar a quantidade de pedidos x notas por vendedor, por exemplo:

    Vendedor ----- Pedidos ------ NFe

    000001 ------- 12 -----------  8

    000002 ------- 26 ------------ 11

    Tentei fazer assim:

    SELECT C5.C5_VEND1 AS Vend, COUNT(C5.C5_NUM) AS QtdPed
    FROM SC5010 C5
    OUTER APPLY
    (
    SELECT COUNT(F2.F2_DOC) AS QtdNFe
    FROM SF2010 F2
    WHERE F2.F2_VEND1 = C5.C5_VEND1
    ) AS QN
    GROUP BY C5.C5_VEND1

    Mas só me retorna isso, fica faltando QtdNFe:

    Vend ------- QtdPed

           --------- 52
    0     --------- 4 
    000001 ----- 36
    000002 ----- 7
    000003 ----- 137

    Alguém tem alguma dica?

    Valeu !!!



    • Editado Felipe Braz quarta-feira, 17 de setembro de 2014 14:45
    quarta-feira, 17 de setembro de 2014 14:42

Respostas

  • Deleted
    quarta-feira, 17 de setembro de 2014 15:06
  • Bom dia,

    Experimente dessa forma:

    with
        CTE_Ped as
        (
            SELECT C5_VEND1 AS Vend, COUNT(C5_NUM) AS QtdPed
            FROM SC5010
            GROUP BY C5_VEND1
        ),
    
        CTE_NFe as
        (
            SELECT F2_VEND as Vend, COUNT(F2_DOC) AS QtdNFe
            FROM SF2010
            GROUP BY F2_VEND
        ) 
    
    SELECT
        p.VEND,
        p.QtdPed,
        n.QtdNFe
    FROM CTE_Ped as p
    left join CTE_NFe as n
        on n.VEND = p.VEND

    Espero que ajude.


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

    quarta-feira, 17 de setembro de 2014 15:08
  • Felipe,

    Com base, nos exemplos dos colegas, você também poderia utilizer o comando Union All, como uma forma de realizar a junção dos dois Selects, veja o exemplo:

    SELECT C5_VEND1 AS Vend, COUNT(C5_NUM) AS QtdPed
    FROM @SC5010
    GROUP BY C5_VEND1
    
    Union All
    
    SELECT F2_VEND as Vend, COUNT(F2_DOC) AS QtdNFe
    FROM @SF2010
    GROUP BY F2_VEND


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 17 de setembro de 2014 15:55

Todas as Respostas

  • Bom dia,

    Experimente dessa forma:

    with
        CTE_Ped as
        (
            SELECT C5_VEND1 AS Vend, COUNT(C5_NUM) AS QtdPed
            FROM SC5010
            GROUP BY C5_VEND1
        ),
    
        CTE_NFe as
        (
            SELECT F2_VEND as Vend, COUNT(F2_DOC) AS QtdNFe
            FROM SF2010
            GROUP BY F2_VEND
        ) 
    
    SELECT
        p.VEND,
        p.QtdPed,
        n.QtdNFe
    FROM CTE_Ped as p
    left join CTE_NFe as n
        on n.VEND = p.VEND

    Espero que ajude.


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

    quarta-feira, 17 de setembro de 2014 15:08
  • Felipe,

    Com base, nos exemplos dos colegas, você também poderia utilizer o comando Union All, como uma forma de realizar a junção dos dois Selects, veja o exemplo:

    SELECT C5_VEND1 AS Vend, COUNT(C5_NUM) AS QtdPed
    FROM @SC5010
    GROUP BY C5_VEND1
    
    Union All
    
    SELECT F2_VEND as Vend, COUNT(F2_DOC) AS QtdNFe
    FROM @SF2010
    GROUP BY F2_VEND


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 17 de setembro de 2014 15:55