Nomear campo NULL - Firebird
Preciso colocar que quando o campo TBFLUXOATEND for NULL me traga como 'AGUARDANDO'
SELECT
RECADATE.DT_ATE,
RECADATE.REG,
RECADATE.PRONT,
RICADPAC.nome,
RICADPAC.nasc,
--PACIENTE AGUARDANDO
(SELECT FIRST 1 (TBFLUXOATEND.DATA_HORA) FROM TBFLUXOATEND
INNER JOIN ATCABECATEND_TBSENHAATEND
ON TBFLUXOATEND.ID_TBSENHAATEND=ATCABECATEND_TBSENHAATEND.ID_TBSENHAATEND
WHERE TBFLUXOATEND.ID_TBLOCAL IN (7,8,9)
AND TBFLUXOATEND.ACAO='C'
AND ATCABECATEND.ID=ATCABECATEND_TBSENHAATEND.ID_ATCABECATEND) AGUARDANDO,
--SALA DE RECUPERACAO
(SELECT FIRST 1 (TBFLUXOATEND.DATA_HORA)FROM TBFLUXOATEND
INNER JOIN ATCABECATEND_TBSENHAATEND
ON TBFLUXOATEND.ID_TBSENHAATEND=ATCABECATEND_TBSENHAATEND.ID_TBSENHAATEND
WHERE TBFLUXOATEND.ID_TBLOCAL IN (7,8,9)
AND TBFLUXOATEND.ACAO='L'
AND ATCABECATEND.ID=ATCABECATEND_TBSENHAATEND.ID_ATCABECATEND) RECUPERACAO
FROM RECADATE
INNER JOIN ATCABECATEND ON RECADATE.ID_ATCABECATEND=ATCABECATEND.ID
INNER JOIN ricadpac ON RICADPAC.ID=atcabecatend.id_ricadpac
WHERE RECADATE.UNIDADE IN (14,15,16,17)
AND CAST(ATCABECATEND.DATA_HORA_ENTRADA AS DATE)=current_date
ORDER BY RECADATE.DT_ATE, RECADATE.REG
;
SELECT
RECADATE.DT_ATE,
RECADATE.REG,
RECADATE.PRONT,
RICADPAC.nome,
RICADPAC.nasc,
--PACIENTE AGUARDANDO
(SELECT FIRST 1 (TBFLUXOATEND.DATA_HORA) FROM TBFLUXOATEND
INNER JOIN ATCABECATEND_TBSENHAATEND
ON TBFLUXOATEND.ID_TBSENHAATEND=ATCABECATEND_TBSENHAATEND.ID_TBSENHAATEND
WHERE TBFLUXOATEND.ID_TBLOCAL IN (7,8,9)
AND TBFLUXOATEND.ACAO='C'
AND ATCABECATEND.ID=ATCABECATEND_TBSENHAATEND.ID_ATCABECATEND) AGUARDANDO,
--SALA DE RECUPERACAO
(SELECT FIRST 1 (TBFLUXOATEND.DATA_HORA)FROM TBFLUXOATEND
INNER JOIN ATCABECATEND_TBSENHAATEND
ON TBFLUXOATEND.ID_TBSENHAATEND=ATCABECATEND_TBSENHAATEND.ID_TBSENHAATEND
WHERE TBFLUXOATEND.ID_TBLOCAL IN (7,8,9)
AND TBFLUXOATEND.ACAO='L'
AND ATCABECATEND.ID=ATCABECATEND_TBSENHAATEND.ID_ATCABECATEND) RECUPERACAO
FROM RECADATE
INNER JOIN ATCABECATEND ON RECADATE.ID_ATCABECATEND=ATCABECATEND.ID
INNER JOIN ricadpac ON RICADPAC.ID=atcabecatend.id_ricadpac
WHERE RECADATE.UNIDADE IN (14,15,16,17)
AND CAST(ATCABECATEND.DATA_HORA_ENTRADA AS DATE)=current_date
ORDER BY RECADATE.DT_ATE, RECADATE.REG
;
Marcos Batista
Curtidas 0
Respostas
Emerson Nascimento
24/02/2022
SELECT RE.DT_ATE, RE.REG, RE.PRONT, RI.nome, RI.nasc, --PACIENTE AGUARDANDO --SE O CAMPO FAT.DATA_HORA **NAO** FOR CARACTER, --SERÁ NECESSÁRIO UM CAST PARA TRANSFORMA-LO EM CARACTER. --SE ISSO NAO FOR FEITO SERA APRESENTADO ERRO, PORQUE UM --MESMO CAMPO NAO PODE TER DOIS TIPOS DE RESULTADO (DATA E 'AGUARDANDO') COALESCE(MAX(CASE WHEN FAT.ACAO='C' THEN FAT.DATA_HORA ELSE NULL END), 'AGUARDANDO') AGUARDANDO, --SALA DE RECUPERACAO --SE O CAMPO FAT.DATA_HORA **NAO** FOR CARACTER, --SERÁ NECESSÁRIO UM CAST PARA TRANSFORMA-LO EM CARACTER. --SE ISSO NAO FOR FEITO SERA APRESENTADO ERRO, PORQUE UM --MESMO CAMPO NAO PODE TER DOIS TIPOS DE RESULTADO (DATA E 'AGUARDANDO') COALESCE(MAX(CASE WHEN FAT.ACAO='L' THEN FAT.DATA_HORA ELSE NULL END), 'AGUARDANDO') AGUARDANDO, FROM RECADATE RE INNER JOIN ATCABECATEND AT ON AT.ID = RE.ID_ATCABECATEND INNER JOIN ricadpac RI ON RI.ID = AT.id_ricadpac LEFT JOIN ATCABECATEND_TBSENHAATEND SAT ON SAT.ID_ATCABECATEND = AT.ID LEFT JOIN TBFLUXOATEND FAT ON FAT.ID_TBSENHAATEND = SAT.ID_TBSENHAATEND AND (FAT.ACAO='L' OR FAT.ACAO='C') AND FAT.ID_TBLOCAL IN (7,8,9) WHERE RE.UNIDADE IN (14,15,16,17) AND CAST(AT.DATA_HORA_ENTRADA AS DATE)=current_date GROUP BY RE.DT_ATE, RE.REG, RE.PRONT, RI.nome, RI.nasc ORDER BY RE.DT_ATE, RE.REG
GOSTEI 0