Usuário com melhor resposta
Diferença entre datas com campo null

Pergunta
-
Bom dia, preciso fazer a soma em dias entre duas datas, uma de entrada e outra de saída de pacientes, porém como alguns pacientes ainda estão internados no hospital, a DATASAIDA fica com status null. Logo, usei a função ISNULL, para que no lugar onde não há data de saída o sql retorne como a data do último dia do mês (2017-06-30). Porém no campo de permanência, o qual faz a diferença entre as datas, o sql não consegue calcular a diferença com o parâmetro informado dentro da função ISNULL. Alguém sabe como posso fazer a diferença entre essas datas?
SELECT SZPACIENTE.NOMEPACIENTE, SZATENDIMENTO.CODPACIENTE, SZATENDIMENTO.CODATENDIMENTO, SZATENDIMENTO.DATAENTRADA, ISNULL(SZATENDIMENTO.DATASAIDA, '2017-06-30 00:00:00.000') AS DATASAIDA, SZCADGERAL.SIGLA, CASE WHEN SZATENDIMENTO.DATAENTRADA = SZATENDIMENTO.DATASAIDA THEN 1 ELSE DATEDIFF (DAY, SZATENDIMENTO.DATAENTRADA, SZATENDIMENTO.DATASAIDA) END PERMANENCIA ,'1' AS QTDEPACIENTE FROM SZPACIENTE, SZATENDIMENTO, SZLEITO, SZCADGERAL WHERE SZPACIENTE.CODPACIENTE = SZATENDIMENTO.CODPACIENTE AND SZLEITO.CODLEITO = SZATENDIMENTO.CODLEITO AND SZCADGERAL.CODGERAL = SZATENDIMENTO.CODCOMPRADOR AND SZATENDIMENTO.DATAENTRADA >='2017-06-01' AND SZATENDIMENTO.DATAENTRADA <='2017-06-30' AND SZATENDIMENTO.CODPRESTADOR = 4 AND SZATENDIMENTO.TIPOPACIENTE = 'I' AND SZPACIENTE.NOMEPACIENTE NOT LIKE '%RN 1%' AND ( SZATENDIMENTO.STATUSCONTA IS NULL OR SZATENDIMENTO.STATUSCONTA = 'L' OR SZATENDIMENTO.STATUSCONTA = 'F' ) AND SZATENDIMENTO.IDUNIDATEND = 4 ORDER BY SZATENDIMENTO.DATAENTRADA
Respostas
-
Bom dia,
Artur, experimente repetir o uso do IsNull:
CASE WHEN SZATENDIMENTO.DATAENTRADA = SZATENDIMENTO.DATASAIDA THEN 1 ELSE DATEDIFF (DAY, SZATENDIMENTO.DATAENTRADA, ISNULL(SZATENDIMENTO.DATASAIDA, '2017-06-30 00:00:00.000')) END PERMANENCIA
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Artur L. Campos terça-feira, 11 de julho de 2017 16:22
-
Deleted
- Marcado como Resposta Artur L. Campos terça-feira, 11 de julho de 2017 16:23
Todas as Respostas
-
Bom dia,
Artur, experimente repetir o uso do IsNull:
CASE WHEN SZATENDIMENTO.DATAENTRADA = SZATENDIMENTO.DATASAIDA THEN 1 ELSE DATEDIFF (DAY, SZATENDIMENTO.DATAENTRADA, ISNULL(SZATENDIMENTO.DATASAIDA, '2017-06-30 00:00:00.000')) END PERMANENCIA
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Artur L. Campos terça-feira, 11 de julho de 2017 16:22
-
Deleted
- Marcado como Resposta Artur L. Campos terça-feira, 11 de julho de 2017 16:23
-
-