我需要在SQL Server数据库中比较2个表,并使用“付费”或“非保留”创建一个新列

时间:2017-01-25 22:50:42

标签: sql sql-server ssms

我不太确定我是否可以在SQL中执行此操作,但我尝试将一个表中的列与另一个表中的列进行比较。

所以我有一个名为“PolicyList”的表格,包含我的所有数据。

我有另一个表名“PolicyWithPayments”,只有这一个中的某些记录。

我想比较这两个:

**PolicyList**           **PolicyWithPayments**           **HitRWithPay**
 *PolicyNumber*             *PolicyNumber*                 *PaidNotPaid*
  1212                        1212                           Paid 
  2323                        3434                           NotPaid
  3434                                                       Paid   

我在前两列中有数据,但我需要第三列,PaidNotPaid,在我的新表中根据PolicyWithPayments中是否存在数字来填充。

如果号码在PolicyWithPayment = "Paid"

如果该号码不在PolicyWithPayments中,但在Policy List = "NotPaid"

如果您需要任何其他信息或任何其他信息,请与我们联系。

谢谢!

谢谢哈里!我显然不知道自己在做什么......

1 个答案:

答案 0 :(得分:1)

一种方法使用left join

select pl.*,
       (case when pwp.PolicyNumber is not null then 'Paid' else 'NotPaid' end) as PaidNotPaid
from PolicyList pl left join
     PolicyWithPayments pwp
     on pwp.PolicyNumber = pl.PolicyNumber;

尽管如此,我实际上更喜欢将exists用于此目的:

select pl.*,
       (case when exists (select 1 from PolicyWithPayments pwp where pwp.PolicyNumber = pl.PolicyNumber)
             then 'Paid' else 'NotPaid'
        end) as PaidNotPaid
from PolicyList pl;

优点是,如果第二个表中有重复项,这不会无意中乘以行数。