同一个人交换FirstName和LastName-Vice Versa

时间:2018-11-30 01:25:56

标签: sql-server

老板要求我提出一个脚本,以在SQL数据库中为所有客户端找到FirstName=LastName和Vice Versa LastName=FirstName

  

示例:
  ID名姓氏分行日期贷款
  648 Joe Blow纽约2017.04.24 6000
  784 Blow Joe纽约2017.09.01 2000

这是我的脚本,但是没有填充我应该得到的内容:

select C1.[Same Person], C1.FirstName, C1.LastName,C1.AccountId, C1.Loan,C1.branch,C1.DateOpened from

(Select a.Accountid,C.FirstName, C.LastName, a.Status,d.Description branch, a.DateOpened,a.TotalAdvances+a.TotalRefinance Loan,

  case when C.FirstName=C.FirstName then C.FirstName when C.LastName=C.LastName
   then C.LastName 
    else 'Unknown'  end as 'Same Person' 
 from Account a
inner join Client C on A.ClientPk=c.Pk
left outer join Branch d on a.branchpk=d.pk)C1

以上脚本的输出如下所示;

|同一个人|名|姓氏| AccountId |贷款|分公司日期|
| :-------------:| :-------------:| :--------------:| :--------------:|:-------------:|:----------:|:--- -----:|
|未知NULL | NULL | 6789 | 3000 |纽约| 2017-09-21 |
|未知NULL | NULL | 8901 | 7000 |纽约| 2017-06-20 |
|考克斯|考克斯|假面| 6789 | 5000 |纽约| 2017-02-19 |

我的脚本应该将上表作为一个客户端沼泽名称生成,因为他的大多数记录都是相同的。

1 个答案:

答案 0 :(得分:0)

我不完全了解您要完成的工作,但这是一个查询,用于检测是否还有另一个客户端被交换了名称-也许这将帮助您开发完整的解决方案。

select FirstName, LastName, AccountId, Loan, Branch, [Date]
  , (select top 1 PK from dbo.Client C1 where C1.LastName = C.FirstName and C1.FirstName = C.LastName and C1.PK != C.PK) [Possible Swapped Duplicate Id]
from dbo.Account A
inner join dbo.Client C on C.PK = A.ClientPK
left outer join dbo.Branch D on D.PK = A.BranchPK