我有一个表格,目前只将记录缩小到唯一的联系人,并且它有效,但由于拼写错误,我仍然留下了该唯一联系人的类似记录。一些"重复"有空列或空列。
我想通过找到填写最多列的记录(尽管准确无误)来解决这个问题,排除其余部分?如果多列填充了相同的金额,请根据最近的创建日期进行选择。有没有办法做到这一点?
fileid datecreated first middle last phone
00001 2015-11-16 bob null smith 555-5555
00002 2013-18-7 BOB SMITHE
00003 2015-11-1 Bobb B Smith 555-5555
00004 2014-5-23 bob smith NULL
我在想我是从使用COUNT()开始的,但我不确定这是否正确。
答案 0 :(得分:0)
这可以帮助您入门。根据每列是NULL还是空为每列分配1或0。得到一行的总和。订单或此总和,然后按日期。
select top 1 *
from
(select
*
, CASE WHEN fileid IS NULL or fileid = '' THEN 0 ELSE 1 END +
CASE WHEN datecreated IS NULL or datecreated = '' THEN 0 ELSE 1 END +
CASE WHEN first IS NULL or first = '' THEN 0 ELSE 1 END +
CASE WHEN middle IS NULL or middle = '' THEN 0 ELSE 1 END +
CASE WHEN last IS NULL or last = '' THEN 0 ELSE 1 END +
CASE WHEN phone IS NULL or phone = '' THEN 0 ELSE 1 END AS NumFilled
from
YourTable) yt
order by numfilled, datecreated desc