【问题标题】:Calculating number of days between Admission Date and today计算入学日期和今天之间的天数
【发布时间】:2012-01-29 08:52:19
【问题描述】:

我在 Stackoverflow 中找到了以下内容,并一直在使用它来查找每个月的患者天数。如果我有录取日期和出院日期,它会很好地工作。

我不知道如何编辑它以计算出院日期尚未完成的患者天数……患者仍在医院。如果觉得我应该使用 Coalesce 或 ISNULL 来查找 Discharge Date 为 NULL 的记录,但我不是程序员,希望能得到您的帮助。

WITH Mos AS (
  SELECT
  D.ED_ADMIT_DATE,
  D.ED_DISCHARGE_DATE,
  Number,

  DateAdd(Month, Number, D.ED_ADMIT_DATE - Day(D.ED_ADMIT_DATE) + 1) MoDate
 FROM
  cases_cstm D
  INNER JOIN master.dbo.spt_values V ON V.Number <= DateDiff(Month, D.ED_ADMIT_DATE,  D.ED_DISCHARGE_DATE)
WHERE
  V.Type = 'P'), Dys AS (
SELECT
  MoDate,
  DateDiff(
     Day,
     CASE WHEN Number = 0 THEN ED_ADMIT_DATE ELSE MoDate END,
     CASE WHEN Number = DateDiff(Month, ED_ADMIT_DATE, ED_DISCHARGE_DATE) THEN  ED_DISCHARGE_DATE ELSE DateAdd(Month, 1, MoDate) -1 
 END
  ) + 1 Cnt
FROM Mos)
 SELECT  Year(MoDate) Yr,
 Coalesce(DateName(Month, MoDate), 'Total') Mo,
 Convert(varchar(11), Sum(Cnt)) + ' day' + CASE WHEN Sum(Cnt) = 1 THEN '' ELSE 's' END Descr

FROM Dys
GROUP BY  MoDate
WITH ROLLUP
ORDER BY
Grouping(MoDate),
MoDate;

【问题讨论】:

    标签: sql datediff coalesce


    【解决方案1】:

    您可以将每次出现的ED_DISCHARGE_DATE 替换为:

    IsNull(ED_DISCHARGE_DATE,getdate())
    

    当出院日期不可用时,这将使用当前时间。

    【讨论】:

    • 感谢 Adnomar,非常感谢。
    猜你喜欢
    • 2013-11-29
    • 2012-07-08
    • 2013-09-16
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多