Column that receives a result if the condition is true

0
SELECT
DISTINCT P.CD_PACIENTE
, P.NM_PACIENTE
, DECODE (P.TP_SEXO, 'M', 'MASCULINO',
                     'F', 'FEMININO', 
                     'I', 'INDEFINIDO') SEXO

, TRUNC(P.DT_NASCIMENTO) DT_NASCIMENTO
, (SELECT FN_IDADE (P.DT_NASCIMENTO, 'a A / m M / d D' ) FROM DUAL) IDADE_PACIENTE
, A.CD_ATENDIMENTO
, A.DT_ATENDIMENTO
, (SELECT FN_IDADE (A.DT_ATENDIMENTO, 'a A / m M / d D' ) FROM DUAL) DIAS_INTERNADO
, PE.CD_PRESTADOR --PRESTADOR DO ATENDIMENTO
, PE.NM_PRESTADOR
, L.CD_LEITO --LEITO DO PACIENTE
, L.DS_LEITO
, UI.CD_UNID_INT                             CD_UNIDADE_INTERNACAO--UNIDADE DE INTERNAÇÃO VINCULADA A INTERNAÇÃO
, UI.DS_UNID_INT                             UNIDADE_INTERNACAO
, (SELECT S.NM_SETOR FROM SETOR S WHERE UI.CD_SETOR = S.CD_SETOR) AS SETOR_UNIDADE_INTERNACAO --SETOR DA UNIDADE DE INTERNAÇÃO
, E.CD_ESPECIALID                            CD_ESPEC_ATENDIMENTO--ESPECIALIDADE VINCULADA AO MÉDICO PRESTADOR DO ATENDIMENTO
, E.DS_ESPECIALID                            ESPEC_ATENDIMENTO
, NULL STATUS

FROM LEITO L
JOIN ATENDIME A     ON A.CD_LEITO         = L.CD_LEITO
JOIN UNID_INT UI    ON UI.CD_UNID_INT     = L.CD_UNID_INT
JOIN SETOR S        ON S.CD_SETOR         = UI.CD_SETOR
JOIN PACIENTE P     ON P.CD_PACIENTE      = A.CD_PACIENTE
JOIN ESP_MED EM     ON EM.CD_PRESTADOR    = A.CD_PRESTADOR --ESPECIALIDADE DO ATENDIMENTO
JOIN ESPECIALID E   ON E.CD_ESPECIALID    = A.CD_ESPECIALID --SE COLOCAR P.CD_PRESTADOR IRÁ RETORNAR MAIS RESULTADOS, POIS UM PRESTADOR PODE TER MAIS DE UMA ESPECIALIDADE.
JOIN PRESTADOR PE   ON PE.CD_PRESTADOR    = A.CD_PRESTADOR   

WHERE A.TP_ATENDIMENTO = 'I'
AND A.CD_MOT_ALT IS NULL
--AND A.CD_MULTI_EMPRESA
AND A.CD_ATENDIMENTO = 773

I want when the code of cd_unid_interncao=64 and cd_especialid=63 the column STATUS receives 1 ; if not, 0 .

    
asked by anonymous 02.05.2018 / 22:00

1 answer

3

As the condition is the result of comparing more than one column you should make use of a searched case statement , that is Case When :

SQLFiddle - Online Example:

SELECT 
 (CASE WHEN cd_unid_interncao=64 and cd_especialid=63 THEN 1
   ELSE 0 
 END) Status
FROM Exemplo;

  

Oracle searches from left to right until you find a   occurrence of true condition and returns return_expr.

     

If no conditions are considered to be true and there is an ELSE clause, the   Oracle will return else_expr. Otherwise, Oracle will return null.

Example:

SELECT
DISTINCT P.CD_PACIENTE
, P.NM_PACIENTE
, DECODE (P.TP_SEXO, 'M', 'MASCULINO',
                     'F', 'FEMININO', 
                     'I', 'INDEFINIDO') SEXO

, TRUNC(P.DT_NASCIMENTO) DT_NASCIMENTO
, (SELECT FN_IDADE (P.DT_NASCIMENTO, 'a A / m M / d D' ) FROM DUAL) IDADE_PACIENTE
, A.CD_ATENDIMENTO
, A.DT_ATENDIMENTO
, (SELECT FN_IDADE (A.DT_ATENDIMENTO, 'a A / m M / d D' ) FROM DUAL) DIAS_INTERNADO
, PE.CD_PRESTADOR --PRESTADOR DO ATENDIMENTO
, PE.NM_PRESTADOR
, L.CD_LEITO --LEITO DO PACIENTE
, L.DS_LEITO
, UI.CD_UNID_INT                             CD_UNIDADE_INTERNACAO--UNIDADE DE INTERNAÇÃO VINCULADA A INTERNAÇÃO
, UI.DS_UNID_INT                             UNIDADE_INTERNACAO
, (SELECT S.NM_SETOR FROM SETOR S WHERE UI.CD_SETOR = S.CD_SETOR) AS SETOR_UNIDADE_INTERNACAO --SETOR DA UNIDADE DE INTERNAÇÃO
, E.CD_ESPECIALID                            CD_ESPEC_ATENDIMENTO--ESPECIALIDADE VINCULADA AO MÉDICO PRESTADOR DO ATENDIMENTO
, E.DS_ESPECIALID                            ESPEC_ATENDIMENTO
, (CASE WHEN cd_unid_interncao=64 and cd_especialid=63 THEN 1
   ELSE 0 
 END)                                        Status

FROM LEITO L
JOIN ATENDIME A     ON A.CD_LEITO         = L.CD_LEITO
JOIN UNID_INT UI    ON UI.CD_UNID_INT     = L.CD_UNID_INT
JOIN SETOR S        ON S.CD_SETOR         = UI.CD_SETOR
JOIN PACIENTE P     ON P.CD_PACIENTE      = A.CD_PACIENTE
JOIN ESP_MED EM     ON EM.CD_PRESTADOR    = A.CD_PRESTADOR --ESPECIALIDADE DO ATENDIMENTO
JOIN ESPECIALID E   ON E.CD_ESPECIALID    = A.CD_ESPECIALID --SE COLOCAR P.CD_PRESTADOR IRÁ RETORNAR MAIS RESULTADOS, POIS UM PRESTADOR PODE TER MAIS DE UMA ESPECIALIDADE.
JOIN PRESTADOR PE   ON PE.CD_PRESTADOR    = A.CD_PRESTADOR   

WHERE A.TP_ATENDIMENTO = 'I'
AND A.CD_MOT_ALT IS NULL
--AND A.CD_MULTI_EMPRESA
AND A.CD_ATENDIMENTO = 773
    
02.05.2018 / 22:07