2017-06-05 2 views
-2

Ich habe eine Abonnementtabelle. Beispielsätze:Finden Sie dup-Datensätze mit verschiedenen Erweiterungen in SQL Server

SUBS_ID | SUBS Name 
    1  | SC FORM 124 
    2  | SC FORM 124-R 

Ich brauche beide die Datensätze zu finden, da das Abonnement Name genau das gleiche ist, aber nur mit einer Erweiterung-R.

+0

Suchen Sie nach allen Datensätzen in der Tabelle, in denen der SUBS-Name mit oder ohne "-R" übereinstimmt? Oder nur alle Datensätze mit dem genauen SUBS-Namen = 'SC FORM 124' oder 'SC FORM 124-R'. –

+0

Hallo und willkommen in SO. Um Ihnen zu helfen, benötigen wir einige Details über Ihre Tabellen, die Daten und Ihre gewünschte Ausgabe. In diesem Artikel finden Sie einen guten Startpunkt. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

Sie müssen alle Datensätze vergleichen und zurückgeben? Können Sie beispielsweise mehr Daten und Ihre erwartete Ausgabe bereitstellen? –

Antwort

1

Wirklich schlecht Wegwerf-Code geschrieben gerade hier und nicht getestet, aber ...

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 
0

Sie können wie unten ROW_NUMBER und Partition verwenden:

Select * from (
    Select *, DupeRecords = Row_number() over(partition by replace([Subs Name],'-R','') order by Subs_Id) 
     from #yoursubs 
    ) a Where a.DupeRecords > 1 
0

Basierend auf neuesten Kriterien:

Also, im obigen Beispiel, wenn ich die Tabelle abfrage, sollte ich alle 3 Datensätze ... die erste bei die Basis Rekord ng und die restlichen 2 die Erweiterungen zu sein - SQL User 17 Minuten vor

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 

das folgende Ergebnis. Eine 'Master'-Zeile, die eine Arbitrary-ID-Nummer von' 0 'und jede Zeile der Familie dieses Masters und dessen Erweiterung erhält.

Subs_ID  SUB_NAME_MAIN  Extension 
----------- -------------------- -------------------- 
0   SC FORM 124   
1   SC FORM 124   
2   SC FORM 124   -R 
Verwandte Themen