none
Comando SQL Ajuda RRS feed

  • Pergunta

  • Pessoal bom dia,

    To com um problema, preciso de uma ajuda, ( sou iniciante).

    é o seguinte:

    Eu preciso

    -- somar os titulos da query 1 + query2 porem tem que sair no final tem que sair os 12 usuarios

    -- Query 1---

    SELECT     NomeUser, COUNT(Descricao) AS QTD_Recebidos

    FROM         dbo.Vw_Distribuicao

    GROUP BY NomeUser

     Resultado do select acima:

    Paulo                   18
    Joaquim              38
    Daniela                44
    Andre                   163
    Eduardo              72
    Lilian                      86
    Luis                       102
    Marcio                 111
    Nicanor                167
    Tatiana                 145
    Tiago                     66
    Valéria                 145

    -- Query 2---

    SELECT     NomeUser, COUNT(Descricao) AS QTD_Recebidos_Ree

    FROM         dbo.vw_distribuicao_com_reentrada

    GROUP BY NomeUser

    Resultado da Query2

    Paulo                   2
    Joaquim              3
    Daniela                5
    Andre                   10
    Eduardo              2
    Lilian                     4
    Luis                        4
    Nicanor                13
    Tatiana                 1
    Valéria                 20

    Eu preciso somar os títulos da query1 com a query2 só quando faço isso não aparece os usuários Tiago e Marcio no resultado, porque eles não tem registros na query2, porem eu preciso que eles apareçam mesmo que eles não tenham registros na query 2

    Porém eu preciso fazer isso, sem criar tabelas a parte, eu preciso fazer em um select mesmo

    O inner join funciona nas duas views pois o código primário é o campo nomeuser

    Como posso fazer isso?

    Obrigado

    segunda-feira, 19 de novembro de 2012 11:05

Respostas

  • Ah sim, desculpe... é soh colocar o nome no group by mais externo.

    SELECT
    	X.NOMEUSER
    	SUM(X.QTD_RECEBIDOS) AS QTD_RECEBIDOS
    FROM (
    	SELECT 
    		NOMEUSER AS NOMEUSER, 
    		COUNT(DESCRICAO) AS QTD_RECEBIDOS
    	FROM DBO.VW_DISTRIBUICAO
    	GROUP BY NOMEUSER
    
    	UNION ALL
    
    	SELECT
    		NOMEUSER AS NOMEUSER, 
    		COUNT(DESCRICAO) AS QTD_RECEBIDOS
    	FROM DBO.VW_DISTRIBUICAO_COM_REENTRADA
    	GROUP BY NOMEUSER
    	)X
    	GROUP BY X.NOMEUSER

    At.
    rafael

    • Marcado como Resposta Diego_nogueira segunda-feira, 19 de novembro de 2012 11:39
    segunda-feira, 19 de novembro de 2012 11:37

Todas as Respostas

  • Bom dia Diego,

    Não sei se interpretei bem sua dúvida. Segue exemplo pra soma o Qt_recebidos das duas queries....

    SELECT
    	X.NOMEUSER
    	SUM(X.QTD_RECEBIDOS) AS QTD_RECEBIDOS
    FROM (
    	SELECT 
    		NOMEUSER AS NOMEUSER, 
    		COUNT(DESCRICAO) AS QTD_RECEBIDOS
    	FROM DBO.VW_DISTRIBUICAO
    	GROUP BY NOMEUSER
    
    	UNION ALL
    
    	SELECT
    		NOMEUSER AS NOMEUSER, 
    		COUNT(DESCRICAO) AS QTD_RECEBIDOS
    	FROM DBO.VW_DISTRIBUICAO_COM_REENTRADA
    	GROUP BY NOMEUSER
    	)X

    At.
    Rafael

    segunda-feira, 19 de novembro de 2012 11:14
  • Rafael obrigado pela ajuda,

    Porem esta com um erro estranho no gropy by, mesmo o campo nomeuser esta setado correto no group by ainda esta reclamando

    Msg 8120, Level 16, State 1, Line 2

    Column 'X.NOMEUSER' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

    segunda-feira, 19 de novembro de 2012 11:31
  • Ah sim, desculpe... é soh colocar o nome no group by mais externo.

    SELECT
    	X.NOMEUSER
    	SUM(X.QTD_RECEBIDOS) AS QTD_RECEBIDOS
    FROM (
    	SELECT 
    		NOMEUSER AS NOMEUSER, 
    		COUNT(DESCRICAO) AS QTD_RECEBIDOS
    	FROM DBO.VW_DISTRIBUICAO
    	GROUP BY NOMEUSER
    
    	UNION ALL
    
    	SELECT
    		NOMEUSER AS NOMEUSER, 
    		COUNT(DESCRICAO) AS QTD_RECEBIDOS
    	FROM DBO.VW_DISTRIBUICAO_COM_REENTRADA
    	GROUP BY NOMEUSER
    	)X
    	GROUP BY X.NOMEUSER

    At.
    rafael

    • Marcado como Resposta Diego_nogueira segunda-feira, 19 de novembro de 2012 11:39
    segunda-feira, 19 de novembro de 2012 11:37