老板要求我提出一个脚本,以在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 |
我的脚本应该将上表作为一个客户端沼泽名称生成,因为他的大多数记录都是相同的。
答案 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