不确定标题是否合适,但无法想出如何用它来表达。这是问题所在。
我正在尝试确定客户是否在会员期间使用了所有福利。这是我到目前为止所拥有的。
Select
HospitalMasterID
,PatientID
,TxnCode
,TxnDate
,PlanDate
From Treatments
where PN = 1
Order By PatientID, TxnDate
现在我需要做的是根据PlanDate分配一个分组。患者可能已经更新了计划。因此,从2012年3月至2013年3月,他们使用了5个独立的福利。然后在2013年3月重新购买了该计划,以便再次启动。我想知道2012年他们没有使用多少和有什么好处。为了做到这一点,我需要找到一种方法来对分组进行分类 - 我不能只使用年份,因为计划可以随时购买,它是从购买开始全年活跃。
必须立即为许多患者做到这一点 - 使用SQL 2008R2
任何建议都将不胜感激。
谢谢,
答案 0 :(得分:0)
Select
HospitalMasterID
,PatientID
,TxnCode
,TxnDate
,PlanDate
,ROW_NUMBER() OVER (PARTITION BY PatientID, PlanDate ORDER BY TxnDate) AS GroupNumber
From Treatments
where PN = 1
Order By PatientID, TxnDate
或者可能
SELECT PatientID, PlanDate, Max(GroupNumber) as BenefitCount
FROM (
Select
HospitalMasterID
,PatientID
,TxnCode
,TxnDate
,PlanDate
,ROW_NUMBER() OVER (PARTITION BY PatientID, PlanDate ORDER BY TxnDate) AS GroupNumber
From Treatments
where PN = 1
)
GROUP BY PatientID, PlanDate
答案 1 :(得分:0)
感谢您的帮助,但我想我会使用PatientID,PlanDate的组合来做到这一点。
在这种情况下原始查询有效。