我正在尝试做一份报告,其中显示我们收到的所有款项,而且报告中我必须显示付款患者的姓名,但此表还包含来自付款人(保险公司)的支票,并且在我加入所有付款之后付款人被排除在外。我已经尝试了我知道的左,右,外,内和两者组合的每个连接版本。 SQL Server 2005。
更新
导致左连接不起作用的行是
select p.*, max(episode_id) over (partition by patient_id) as maxei from patient p
我在加入中使用的。我们的系统使用一个情节系统,所以如果病人离开并回来,他们会得到一个新的情节。付款表没有剧集字段,因此我在联接中使用该行代码仅显示当前剧集。知道我怎么能保持它只显示当前的情节而不丢失没有patient_id的字段?没有患者id的字段的示例在第二图像中示出。
select
pay.patient_id,
p.lname + ', ' + p.fname as 'Name',
pay.source_type,
pay.instrument,
pay.doc_reference,
pay.instrument_date,
pay.payment_amount,
pay.user_id,
pay.entry_chron,
pay.payor_id
from payment pay
join (select p.*, max(episode_id) over (partition by patient_id) as maxei from patient p) p
on p.patient_id = pay.patient_id
where episode_id = maxei and (pay.instrument_date between '2014-11-01' and '2014-11-30')
order by pay.payment_amount
对于某些领域的患者,为了保密,这就是结果。
这些是被排除的字段