none
Unindo Linhas com mesmo nome e somando valores RRS feed

  • Pergunta

  • Bom dia, 

    qual comando aplico em minha consulta para os valores agruparem?

    select distinct
    	SCURSO.nome,
    	(select distinct COUNT(SMATRICPL.ra)
    		from SMATRICPL
    		where 
    		SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL and 
    		SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO and
    		SMATRICPL.CODSTATUS=14
    			and SMATRICPL.IDPERLET=14 
    			and SMATRICPL.RA not in(
    				select distinct SMATRICULA.RA
    				from SMATRICULA
    				where 
    				SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL and 
    				SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO and
    				SMATRICULA.CODSTATUS in (9,3)
    				and SMATRICULA.IDPERLET =14)
    				)
    from SMATRICPL
    	inner join SHABILITACAOFILIAL on SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL
    	inner join SCURSO on SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO
    
    where
    	SCURSO.CODCURSO in (01,03,05,06,07,08,10,11,12,13,14)
    	and SMATRICPL.idperlet = 14
    group by
    	SCURSO.NOME, SCURSO.CODCURSO, SHABILITACAOFILIAL.IDHABILITACAOFILIAL, SHABILITACAOFILIAL.CODCURSO


    CharlesTI.

    quarta-feira, 27 de abril de 2016 14:16

Todas as Respostas

  • Bom dia,

    Você vai precisar somar os números da coluna 2 para conseguir agrupar.
    Observe que "MEDICINA" tem 4 registros, isso porque tem quatro valores na coluna 2. Some a coluna dois e ele vai agrupar.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    quarta-feira, 27 de abril de 2016 14:36
  • Bom dia,

    Charles, não sei se entendi corretamente mas experimente fazer uns testes dessa forma:

    select
    	SCURSO.nome,
    	COUNT(SMATRICPL.ra)
    from SMATRICPL
    	inner join SHABILITACAOFILIAL on SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL
    	inner join SCURSO on SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO
    
    where
    	SCURSO.CODCURSO in (01,03,05,06,07,08,10,11,12,13,14)
    	and SMATRICPL.idperlet = 14
    	and SMATRICPL.CODSTATUS = 14
    group by
    	SCURSO.NOME

    Espero que ajude


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

    quarta-feira, 27 de abril de 2016 14:48
  • Boa tarde Gapimex, eu preciso somente somar aqueles valores, é que ali estou trazendo sub consultas diferentes e não será somente uma soma, serão 3, então precisarei arrumar um jeito de somar aqueles valores para poder trazer mais colunas na sub consulta.

    CharlesTI.

    quarta-feira, 27 de abril de 2016 15:00
  • Acho que você tem que passar mais informações para que possamos tentar alguma sugestão.

    Você testou a query que sugeri? O valor retornado está entre os que você espera? Quais valores ainda faltam?


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

    quarta-feira, 27 de abril de 2016 15:30
  • Gapimex, não me ajudou. Como lhe disse anteriormente, o que preciso é trarar o que está aqui dentro dessa sub consulta pra me trazer o os valores que quero, nesta sub consulta uma coluna me trará a quantidade de alunos somente matriculados, outra coluna que estão matriculados e também cursando matriculados/dependência e outra pra me trazer somente dependência. Tipo essa que estará descrito pra vc. Como migramos um sistema, as tabelas mudaram e também acrescentaram mais tabelas de relacionamento, porém o objetivo é o mesmo

    select ucursos.nome as CURSO,
          (select count(umatricpl.mataluno)
             from umatricpl (nolock)
    	where ucursos.codcur      = umatricpl.codcur
              and umatricpl.status    = 'ma'
    	  and umatricpl.perletivo ='1-2016'
    	  and umatricpl.mataluno not in(
    									select distinct umatalun.mataluno
    									 from umatalun (nolock)
    										where ucursos.codcur     = umatalun.codcur    
    									and umatalun.status in ('dp','ad')
    									and umatalun.perletivo ='1-2016')) as MATRICULADO
          --(select count(umatricpl.mataluno)
          --   from umatricpl (nolock)
          --  where ucursos.codcur      = umatricpl.codcur
          --    and umatricpl.status    = 'ma'
          --    and umatricpl.perletivo ='1-2016'
          --    and umatricpl.mataluno in(select distinct umatalun.mataluno
          --                                from umatalun (nolock)
          --                               where ucursos.codcur     = umatalun.codcur    
          --                                 and umatalun.status    = 'dp'
          --                                 and umatalun.perletivo ='1-2016')
          --    and umatricpl.mataluno in(select distinct umatalun.mataluno  
          --                                from umatalun (nolock)
          --                               where umatalun.codcur    = ucursos.codcur
          --                                 and umatalun.status    ='ma'
          --                                 and umatalun.perletivo ='1-2016')
          --    ) as CURSANDO_DP,
          --(select count(umatricpl.mataluno)
          --   from umatricpl (nolock)
          --  where ucursos.codcur      = umatricpl.codcur
          --    and umatricpl.status    = 'ma'
          --    and umatricpl.perletivo ='1-2016'
          --    and umatricpl.mataluno  not in(select distinct umatalun.mataluno
          --                                 from umatalun (nolock)
          --                                where ucursos.codcur     = umatalun.codcur  
    						--				and umatalun.perletivo ='1-2016'  
          --                                  and umatalun.status    ='ma')
          --                                  ) as SOMENTE_DEPENDENCIA
    from  ucursos (nolock),
          umatricpl (nolock)
    where umatricpl.codcur     = ucursos.codcur 
      and umatricpl.codcur in ('1','3','5','6','7','8','10','11','12','13','14')
      and umatricpl.perletivo  ='1-2016'
    group by 
        ucursos.nome,
        ucursos.codcur
    order by
    	ucursos.nome
    



    CharlesTI.

    quarta-feira, 27 de abril de 2016 16:29
  • Gapimex com esta consulta do enunciado não tem como eu adicionar uma soma nela para agrupar os valores não? Para que eu termine de adicionar o restante?

    CharlesTI.

    quarta-feira, 27 de abril de 2016 16:55
  • A subquery da forma como você está utilizando deve retornar apenas um valor/coluna.

    Não sei se entendi corretamente o que você quer fazer, mas talvez você consiga fazer o que quer utilizando o operador Apply. Ex:

    select
        n.IdNota,
        a.Quantidade,
        a.Total
    from Notas as n
    outer apply
    (
        select
            count(*) as Quantidade,
            sum(Valor) as Total
        from Itens as i
        where 
            i.IdNota = n.IdNota
    ) as a
    

    Espero que ajude


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

    quarta-feira, 27 de abril de 2016 19:04