查找两个表之间的匹配或不匹配

时间:2016-01-13 00:23:05

标签: sql sql-server-2008

我是sql的新手,所以在开始之前让我道歉。

我试图通过以下方式标记我称之为政策号码的匹配。

Select c.last_name, c.first_name, c.sex, c.date_of_birth, c.record_nbr, 
case when ph.policy_nbr = cp.policy_nbr then ph.policy_nbr else 'No Match'

From table ph

Left join client c
On ph.last_name = c.last_name
And ph.first_name = c.first_name
And ph.date_of_birth = c.date_of_birth
And ph.sex = c.sex
Left join person_payer cp
On c.person_id = cp.person_id

Group by c.last_name, c.first_name,c.date_of_birth, 
c.sex,ph.policy_num, cp.policy_nbr

这个想法是根据姓氏,名字,dob和性别在表格之间找到匹配。然后我想验证政策号码的匹配或不匹配。患者记录中是否存在保单编号?不幸的是,由于客户记录中存在多个策略编号,因此产生匹配且不匹配。如何将报告列为客户一次且仅列出“不匹配”或匹配保单号。

2 个答案:

答案 0 :(得分:0)

假设策略表的名称是PolicyTable(因为它已命名为表但sql server抱怨它),您可以在单列而不是连接中进行选择。

SomeAsyncMethod

答案 1 :(得分:0)

Select c.last_name, c.first_name, c.sex, c.date_of_birth, c.record_nbr, 
isnull(cp.policy_nbr, 'No Match')

From table ph

Left join client c
On ph.last_name = c.last_name
And ph.first_name = c.first_name
And ph.date_of_birth = c.date_of_birth
And ph.sex = c.sex
Left join person_payer cp
On c.person_id = cp.person_id
and ph.policy_nbr = cp.policy_nbr 

Group by c.last_name, c.first_name,c.date_of_birth, 
c.sex,ph.policy_num, cp.policy_nbr