我在填充医院单位的每日人口普查(当前住院人数)时遇到问题。 This previous post 是我找到查询的地方。
SELECT
[date], COUNT (DISTINCT
CASE WHEN admit_date <= [date] AND discharge_date >= [date] THEN id END)) AS census
FROM
dbo.patients, dbo.census
GROUP BY
[date]
ORDER BY
[date]
有2张表:
dbo.patients
带有 id、admit_date 和放电日期列 dbo.census
有一个包含自 2017 年以来每个日期的日期列,以及一个空白的人口普查列 查询填充人口普查列,但人口普查计数在日期结束时减少到比它应该的更小的数字。例如,discharge_date 有 65 个空值,因此今天日期的人口普查计数应该为 65,但查询生成的计数为 8。
最佳答案
可能需要考虑 NULL
出院日期
SELECT [date], COUNT (DISTINCT
CASE WHEN admit_date <= [date] AND COALESCE(discharge_date, GETDATE()) >= [date] THEN id END))
AS census
FROM dbo.patients
CROSS JOIN dbo.census
GROUP BY [date]
ORDER BY [date]
也就是说,假设
[date]
是某种当前日期/时间戳。另外,根据 Sean Lange 的评论,如果您真的想要 CROSS JOIN
,那么您应该在查询中指定它。关于sql-server - 用于计算每日人口普查的 SQL Server 查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59272448/