trazer a subtracao de um valor

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
freire28
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 24 Nov 2008 2:47 pm
Localização: Maringa

bom dia pessoal alguém pode me ajudar num problema é o seguinte

tenho esse sql

Selecionar tudo

SELECT COUNT(*)as quantidade
      ,TO_CHAR(A.DH_ENTRADA, 'MONTH') AS Periodo
      ,TO_CHAR(A.DH_ENTRADA,'MM/YYYY') as AnoMEs
      ,mo.ds_modalidade
      ,re.ds_regional
  FROM atendimento a, atendimentolocal al, tipoatendimento t, grupotipoatendimento g
      ,paciente pa,localidade l, modalidade mo, regional re
 WHERE a.cd_unidadesaude = al.cd_unidadesaude 
   AND a.cd_atendimento  = al.cd_atendimento
   AND a.cd_tipoatendimento = t.cd_tipoatendimento 
   AND t.cd_grupo = g.cd_grupo
   AND a.cd_paciente = pa.cd_paciente
   AND PA.cd_localidade = l.cd_localidade
   AND al.cd_modalidade = mo.cd_modalidade
   AND l.cd_regional = re.cd_regional
 GROUP BY TO_CHAR(A.DH_ENTRADA,'MONTH'),mo.ds_modalidade, re.ds_regional
         ,TO_CHAR(A.DH_ENTRADA,'MM/YYYY')
 ORDER BY TO_CHAR(A.DH_ENTRADA,'MM/YYYY')
acontece o seguinte, eu agrupo por modalidade, mas preciso fazer com que caso modalidade seja por exemplo X eu sbtraia da quantidade
exemplo

Selecionar tudo

39	OUTUBRO  	10/2008	AMBULATORIAL / U	
8	 OUTUBRO  	10/2008	HOSPITALAR / P.A.
neste caso eu tenho 39 ambulatoriais e 8 hospitalares, com eu faço pra fazer a subtracao desses dados ?
com base no select acima??
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que você pode seguir as dicas desse post:
http://glufke.net/oracle/viewtopic.php?t=2650
Tem 2 links ali (sobre crosstab) que talvez possam te ajudar.

Veja o exemplo que eu tentei simular. Minha tabela:

Selecionar tudo

SQL> select * from thomas;

TIPO            VALOR mês
---------- ---------- ----------
HOSP               10 OUTUBRO
HOSP               20 OUTUBRO
AMB                30 OUTUBRO
AMB                40 OUTUBRO

SQL> 
Somando por mês e TIPO:

Selecionar tudo

SQL> SELECT mês, TIPO, SUM(VALOR) TOTAL
  2  FROM THOMAS
  3  GROUP BY mês, TIPO
  4  /

mês        TIPO            TOTAL
---------- ---------- ----------
OUTUBRO    AMB                70
OUTUBRO    HOSP               30

SQL> 
Agora, colocando os 2 valores lado a lado.

Selecionar tudo

SQL> SELECT
  2    mês
  3  , SUM( decode(tipo,'AMB' , total) )  TIPO1
  4  , SUM( decode(tipo,'HOSP', total) )  TIPO2
  5  FROM
  6    (
  7    SELECT mês, TIPO, SUM(VALOR) TOTAL
  8    FROM THOMAS
  9    GROUP BY mês, TIPO
 10    )
 11  GROUP BY mês
 12  /

mês             TIPO1      TIPO2
---------- ---------- ----------
OUTUBRO            70         30

SQL> 
Agora, basta subtrair o tipo1 e tipo2!
freire28
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 24 Nov 2008 2:47 pm
Localização: Maringa

Valeu cara é bem isso ai que eu precisava
Responder
  • Informação