none
Diferença entre datas com campo null RRS feed

  • 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
    terça-feira, 11 de julho de 2017 13:19

Respostas

Todas as Respostas