Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

danielmi

Preciso de uma mão, SOMAR resultados

Recommended Posts

Eis a seguinte query:

 

Citar

SELECT EQUIPAMENTO AS NOME2,            
  CLINICA          AS NOME,             
  COUNT(DISTINCT CHAVE) AS QTD_ATND,    
  COUNT(DISTINCT NREXAME) AS QTD_EXAMES,
  SUM(CHAVESERV) AS QTD_SERVICOS,       
  SUM(VALORITEM) AS VALOR               

FROM (                                  
SELECT AE.NREXAME,                      
  A.NRATENDIMENTO AS CHAVE,
  (SF_VALORITEM('S', 'SHSCSFSRCSRHSRFSU', ATNDS.FK_SERVICO, ATNDS.FK_CONVENIO, ATNDS.FK_CONVENIOPLANO,
     ATNDS.FK_DTHRINICIOATND, ATNDS.FK_PACIENTE, ATNDS.DTHRUTILIZACAO, ATNDS.SEQUENCIA, ATNDS.NrExame, ATNDS.QTD)
   + ATNDS.DESCACRES) AS VALORITEM,
  GE.NOME AS GRUPO, C.NOME AS CLINICA, EQP.NOME AS EQUIPAMENTO,
  GE.ID_GRUPOEQUIPAMENTO,
  A.DTHRINICIOATND,
  ATNDS.QTD AS CHAVESERV 
 FROM ATENDIMENTOS A 
 INNER JOIN ATENDIMENTOSEXAMES AE ON (A.DTHRINICIOATND = AE.FK_DTHRINICIOATND AND A.FK_PACIENTE = AE.FK_PACIENTE) 
 INNER JOIN ATENDIMENTOSSERVICOS ATNDS ON (ATNDS.FK_DTHRINICIOATND = AE.FK_DTHRINICIOATND AND ATNDS.FK_PACIENTE = AE.FK_PACIENTE
                                           AND ATNDS.NREXAME = AE.NREXAME)
 INNER JOIN GRUPOSEQUIPAMENTOS GE ON (AE.FK_GRUPOEQUIPAMENTO = GE.ID_GRUPOEQUIPAMENTO) 
 INNER JOIN CLINICAS C ON (GE.FK_CLINICA = C.ID_CLINICA) 
 LEFT JOIN EQUIPAMENTOS EQP ON (AE.FK_EQUIPAMENTO = EQP.FK_RECURSO)
WHERE ((AE.FK_EQUIPAMENTO = -1) OR (-1 = -1)) 
  AND A.DOMNTIPOATND = 'X'
  AND ((-1 = -1) OR (AE.FK_GRUPOEQUIPAMENTO = -1))
  AND ((C.ID_CLINICA   = -1) OR (-1 = -1))
  AND ((C.FK_INSTITUTO = 1) OR (1 = -1))
  AND ((ATNDS.FK_CONVENIO = 23) OR (23 = -1))
AND ATNDS.FK_DTHRINICIOATND >= '9/2/2017' 
AND ATNDS.FK_DTHRINICIOATND <= '17/2/2017 23:59:59' 
UNION ALL                               
SELECT AE.NREXAME,                      
  A.NRATENDIMENTO AS CHAVE,
  SF_VALORITEM('M', '', ATNDM.FK_MATERIAL, ATNDM.FK_CONVENIO, ATNDM.FK_CONVENIOPLANO,
    ATNDM.FK_DTHRINICIOATND, ATNDM.FK_PACIENTE, ATNDM.DTHRUTILIZACAO, 0, ATNDM.NrExame, ATNDM.QTD) AS VALORITEM,
  GE.NOME AS GRUPO, C.NOME AS CLINICA, EQP.NOME AS EQUIPAMENTO,
  GE.ID_GRUPOEQUIPAMENTO,
  A.DTHRINICIOATND,
  0 AS CHAVESERV 
 FROM ATENDIMENTOS A 
 INNER JOIN ATENDIMENTOSEXAMES AE ON (A.DTHRINICIOATND = AE.FK_DTHRINICIOATND AND A.FK_PACIENTE = AE.FK_PACIENTE) 
 INNER JOIN ATENDIMENTOSMATERIAIS ATNDM ON (ATNDM.FK_DTHRINICIOATND = AE.FK_DTHRINICIOATND AND ATNDM.FK_PACIENTE = AE.FK_PACIENTE
                                            AND ATNDM.NREXAME = AE.NREXAME)
 INNER JOIN GRUPOSEQUIPAMENTOS GE ON (AE.FK_GRUPOEQUIPAMENTO = GE.ID_GRUPOEQUIPAMENTO) 
 INNER JOIN CLINICAS C ON (GE.FK_CLINICA = C.ID_CLINICA) 
 LEFT JOIN EQUIPAMENTOS EQP ON (AE.FK_EQUIPAMENTO = EQP.FK_RECURSO)
WHERE ((AE.FK_EQUIPAMENTO = -1) OR (-1 = -1)) 
  AND A.DOMNTIPOATND = 'X'
  AND ((-1 = -1) OR (AE.FK_GRUPOEQUIPAMENTO = -1))
  AND ((C.ID_CLINICA   = -1) OR (-1 = -1))
  AND ((C.FK_INSTITUTO = 1) OR (1 = -1))
  AND ((ATNDM.FK_CONVENIO = 23) OR (23 = -1))
AND ATNDM.FK_DTHRINICIOATND >= '9/2/2017' 
AND ATNDM.FK_DTHRINICIOATND <= '17/2/2017 23:59:59' 
) QRY1
GROUP BY CLINICA, EQUIPAMENTO
ORDER BY CLINICA, EQUIPAMENTO
 

 

Ele me retorna o seguinte resultado:
 

58a43b10ea6e3_Semttulo.png.353a34e18be007d803f278efbd19a664.png

 

Eu gostaria de saber como SOMAR os resultados, exemplo total_servicos e somar os valores 1+3+1+1 que no caso é a chave SUM(CHAVESERV) AS QTD_SERVICOS,
ou seja queria saber como somar um RESULTADO já obtido da query.

 

Tentei fazer da seguinte maneira, mas ele não reconhece a coluna já resultando de uma consulta:


SELECT EQUIPAMENTO AS NOME2,            
  CLINICA          AS NOME,             
  COUNT(DISTINCT CHAVE) AS QTD_ATND,    
  COUNT(DISTINCT NREXAME) AS QTD_EXAMES,
  SUM(CHAVESERV) AS QTD_SERVICOS,       
  SUM(VALORITEM) AS VALOR,

  SUM(QTD_SERVICOS) AS TOTAL_SERVICOS

Agradeço muito a ajuda de todos!       

Compartilhar este post


Link para o post
Compartilhar em outros sites
27 minutos atrás, Fabiano Abreu disse:

Daniel, dá uma procurada por WITH ROLLUP

 

Um exemplo: http://jquerydicas.blogspot.com.br/2015/01/mysql-sum-com-rollup-calcular-o.html

 

Fabiano, obrigado pela dica, mas você poderia me mostrar como ficaria nesta query ?

Estou testando aqui também mas por enquanto sem sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel, caso tenha dificuldades com o rollup, sugiro fazer o seguinte, com o resultado do select, crie uma tabela, depois, é só totalizar os resultados com um select.

 

Espero ter ajudado.

 

_ _

Fabiano Abreu

Papo SQL | Quiz na Web

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.