Usuário com melhor resposta
Count de dois campos e tabelas diferentes

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_VEND1Mas só me retorna isso, fica faltando QtdNFe:
Vend ------- QtdPed
--------- 52
0 --------- 4
000001 ----- 36
000002 ----- 7
000003 ----- 137Alguém tem alguma dica?
Valeu !!!
- Editado Felipe Braz quarta-feira, 17 de setembro de 2014 14:45
Respostas
-
Deleted
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 14:59
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 18:26
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
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 14:59
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 18:26
-
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
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 14:59
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 18:26
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
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 14:59
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 18:26
-
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
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 14:59
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 18 de setembro de 2014 18:26