【发布时间】:2012-03-06 22:23:30
【问题描述】:
我基本上需要对 2 个表(CarePlan 和推荐人)进行左外连接问题是我需要最新的推荐人如果存在,如果不存在也没关系。
我有这 2 个问题 1. 加入 CarePlan/Referral 表 - 如果一个护理计划有多个推荐,或者根本没有推荐信息(左外连接),则创建重复的护理计划 2. 给定 CarePlanId,根据日期选择前 1 个推荐人
我想将这两个结合起来,所以我会获取所有的护理计划及其转介(如果存在),如果存在 - 只接受最新的转介
select * from CarePlan c //query 1
left outer join Referral r on
r.CarePlanId = c.CarePlanId
select top 1 * from Referral r //query 2
where r.CarePlanId = '1'
order by ReferralDate desc
编辑:
第一个查询给了我这样的信息:
CarePlanID ReferralId ReferralDate
---------- ---------- ------------
1 1 05/15/12
2 NULL NULL
1 2 05/10/12 //Old date, dont want this careplan
第二个查询会给我最新日期的推荐
ReferralId ReferralDate
---------- ------------
1 05/15/12
推荐数据,可能有 0 个或多个属于 Careplan 的推荐
ReferralID CarePlanId Date
---------- ---------- ----
1 1 05/15/12
2 1 05/10/12
最终我想要一个查询,它可以为我提供具有最新日期的推荐的护理计划,如果没有,则推荐为 null
像这样:
CarePlanId ReferralId ReferralDate
---------- ---------- ------------
1 1 05/15/12
2 NULL NULL
谢谢 - 我希望这是有道理的
【问题讨论】:
-
在阅读您想要的内容时遇到问题,但我认为您需要查找如何制作 cte 或派生表。
-
你能展示样本数据和想要的结果吗?像@HLGEM 一样,不清楚你从哪里开始,你想在哪里结束。
标签: sql sql-server-2008