我有一个包含以下内容的SQL表
ID AccountNumber Name
1 12345 Tony
2 123456 Mike
3 123458 Mike
4 45689 Tom
5 666999 Tim
6 6669997 Lisa
7 44455 Tim
8 78901 Matt
9 789011 Roger
我需要做的是向我显示所有以相同值(不确定数字)开头的帐户的记录。例如。在此表中,我要选择并显示以下内容:
12345
123456
123458
666999
6669997
78901
789011
如您所见,它显示AccountNumber匹配或具有相同起始编号的每一行。我一直无法找到正确的查询,希望对您有所帮助。
谢谢!
您提到的情况满足了,时间越长越短。这是一个查询,它将为每个帐号提供最短的匹配:
select AccountNumber
from (select a.*, count(*) over (partition by ShortestAN) as numAN
from (select a.*,
(select top 1 a2.AccountNumber
from accounts a2
where a.AccountNumber like a2.AccountNumber + '%'
order by length(a2.AccountNumber) asc
) as ShortestAN
from accounts a
) a
) a
where numAN > 1
order by ShortestAN, AccountNumber;
子查询查找匹配的最短帐号。其余的只是返回那些有多个比赛的比赛。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句