【发布时间】:2016-07-26 13:36:35
【问题描述】:
我需要计算在当年前六个月和本财政年度最后六个月接受过服务的所有患者。这是我想出的,但不确定它是否会完全干净。
with sd as
(
select cln.cln_urn, MAX(srv_date) As Last_D, MIN(srv_date) AS First_d
from cw_domain dmn
inner join cw_service srv on srv.srv_dmn_fk=dmn.dmn_pk
inner join cw_client cln on cln.cln_pk=srv.srv_cln_fk
inner join cw_subservice sbs on sbs.sbs_pk=srv.srv_sbs_fk
inner join cw_service_category ct on ct.srv_ct_rpk=sbs.sbs_srv_ct_rfk
WHERE srv.srv_date >= '03/01/2015'
and srv.srv_date <= '02/29/2016'
and srv_ct_rpk = '002'
group by cln_urn
having MAX(srv_date)>= MIN(srv_date)+180
)
select count (distinct cln_urn)
from sd
本报告研究的是跟上治疗进度的客户数量。为了让我们的客户群被视为“护理中”,他们必须每年看医生两次:上半年一次,下半年一次
【问题讨论】:
-
- 告诉我们您要选择的日期 - 今年的前 6 个月是什么意思,如果您说财政年度的最后 6 个月 - 非常令人困惑,您可能需要从中选择记录上半年,然后 INNER JOIN 从下半年开始记录 - 如果两者都存在 - 然后选择行
-
看看年份。这些日期介于 2015 年 3 月 1 日和 2016 年 2 月 29 日之间。FY 年可以是 FY 或 CY。我在做风云。患者需要在指定年份的前六个月和指定年份的最后六个月都进行过访问才有资格。
-
0 反对票是的,我知道,对不起,我错了 - 你可以从前半部分中选择,然后使用 IF EXISTS(select ..from 后半部分为同一个人) 完成选择
标签: sql sql-server tsql