Bom dia pessoal!
Sou novo na parte de sintaxe SQL e preciso de um auxílio.
Estou utilizando Oracle e estou com o seguinte problema:
Preciso selecionar somente os pacientes (PAC.PAC_NOME) que fizeram respectivamente exames nas categorias C e E ( CTF.CTF_CATEG in ( 'C','E' ) ).
Ocorre que o select está trazendo os pacientes que fizeram C e E mas também trás os que fizeram somente C e somente E. Como faço uma condição para trazer os pacientes que fizeram C e E respectivamente dentro da data informada?
Segue o código que eu fiz:
SELECT PAC.PAC_NOME,
SMK.SMK_NOME,
SUM ( SMM.SMM_QT ),
CTF.CTF_CATEG
FROM PAC, SMM, SMK, CTF, CNV CV, STR, ESP, OSM, ESM, PSV
WHERE ( SMM.SMM_SFAT <> 'C' ) AND
( OSM.OSM_SERIE = SMM.SMM_OSM_SERIE ) AND
( OSM.OSM_NUM = SMM.SMM_OSM ) AND
( ( CV.CNV_COD = NVL ( SMM.SMM_CNV_COD, OSM.OSM_CNV ) ) ) AND
( STR.STR_COD = SMM.SMM_STR ) AND
( SMK.SMK_TIPO = SMM.SMM_TPCOD ) AND
( SMK.SMK_COD = SMM.SMM_COD ) AND
( SMK.SMK_TIPO = CTF.CTF_TIPO ) AND
( SMK.SMK_CTF = CTF.CTF_COD ) AND
( OSM.OSM_PAC = PAC.PAC_REG ) AND
( PSV.PSV_COD = SMM.SMM_MED ) AND
( ESM.ESM_MED = PSV.PSV_COD ) AND
( ESP.ESP_COD = ESM.ESM_ESP ) AND
( ESM.ESM_DEFAULT = 'S' ) AND
( CV.CNV_COD not in ( 'ICB','44' ) ) AND
( STR.STR_NOME not in ( 'ICB','CEC' ) ) AND
( CTF.CTF_CATEG in ( 'C','E' ) ) AND
( ESP.ESP_COD <> 'ICB' ) AND
( SMM.SMM_VLR > 0 ) AND
( SMM.SMM_COD not in ( '1AUX','2AUX','3AUX' ) ) AND
( ( OSM.OSM_DTHR >= to_date ( '01/10/2016 00:00', 'dd/mm/yyyy hh24:mi' ) AND
OSM.OSM_DTHR < to_date ( '27/10/2016 00:00', 'dd/mm/yyyy hh24:mi' ) ) )
GROUP BY PAC.PAC_NOME,
SMK.SMK_NOME,
CTF.CTF_CATEG
ORDER BY PAC.PAC_NOME ASC