我有一个订阅表。样品记录:在SQL Server中查找具有不同扩展名的dup记录
SUBS_ID | SUBS Name
1 | SC FORM 124
2 | SC FORM 124-R
我需要找到两者的记录,作为预订名称是完全一样的,但只是一个扩展-R。
我有一个订阅表。样品记录:在SQL Server中查找具有不同扩展名的dup记录
SUBS_ID | SUBS Name
1 | SC FORM 124
2 | SC FORM 124-R
我需要找到两者的记录,作为预订名称是完全一样的,但只是一个扩展-R。
非常糟糕的一次性的代码编写直奔这里和未经考验的,但是......
with cte As (Select Name, Id
From Subs
Where Name Not Like '%-R'
)
Select cte.Id, cte.Name, M.Name
From Subs As M
Join cte
On cte.Name + '-R' = M.Name
您可以通过如下使用ROW_NUMBER和分区:
Select * from (
Select *, DupeRecords = Row_number() over(partition by replace([Subs Name],'-R','') order by Subs_Id)
from #yoursubs
) a Where a.DupeRecords > 1
根据您的最新标准:
因此,在上面的例子中,当我查询表中,我应该得到所有3 记录......第一个bei纳克库记录,其余2 是所述扩展 - SQL用户17分钟前
SELECT distinct
0 as Subs_ID
, CASE WHEN SUBS_Name like '%-%' THEN left(SUBS_Name,charindex('-',SUBS_Name)-1) ELSE SUBS_Name END AS SUB_NAME_MAIN
, '' as Extension
FROM
subs
UNION
SELECT
Subs_ID
, CASE WHEN SUBS_Name like '%-%' THEN left(SUBS_Name,charindex('-',SUBS_Name)-1) ELSE SUBS_Name END AS SUB_NAME_MAIN
, CASE WHEN SUBS_Name like '%-%' THEN RIGHT(SUBS_Name, LEN(SUBS_Name) - charindex('-',SUBS_Name)+1) ELSE '' END AS Extension
FROM
subs
将产生以下结果。一个“主”行,其中的仲裁ID号为'0',并且该主人家族的每一行及其扩展名。
Subs_ID SUB_NAME_MAIN Extension
----------- -------------------- --------------------
0 SC FORM 124
1 SC FORM 124
2 SC FORM 124 -R
你查询表中的所有记录中,其中SUBS名称带有或不带有“-R”相匹配?或者只是具有完全SUBS名称='SC FORM 124'或'SC FORM 124-R'的所有记录。 –
嗨,欢迎来到SO。为了帮助我们需要关于您的表格,数据和您想要的输出的一些细节。看到这篇文章是一个很好的开始。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
您需要比较所有记录并返回?你能否提供更多数据和预期产出的例子? –