Sql server 如何基于另一列中的重复项识别列中的不同值

Sql server 如何基于另一列中的重复项识别列中的不同值,sql-server,Sql Server,表中有三列: Name Ascii_Name Alternate_names Abat Abat1 Abat, Abat1 Abayah Abayah1 Abayah,Abayah1 Abayah Abayah1 Abayah,Abayah1 Abat Abat1 Abat, Abath Carne Carnt Carne, Carnt 对于值相同的名称和Ascii_名称对,我必须在

表中有三列:

  Name  Ascii_Name  Alternate_names

  Abat     Abat1       Abat, Abat1
  Abayah   Abayah1     Abayah,Abayah1
  Abayah   Abayah1     Abayah,Abayah1
  Abat     Abat1       Abat, Abath
  Carne    Carnt       Carne, Carnt

对于值相同的名称和Ascii_名称对,我必须在值不同的备用_名称中查找值。结果集必须包含备用名称,其中名称和Ascii名称对至少重复两次。结果必须如下所示:

 Name   Ascii_Name  Alternate_names
  Abat     Abat1       Abat, Abat1
  Abat     Abat1       Abat, Abath

请注意,结果集不包含最后一行值Carne Carnt Carne,Carnt,因为它没有被重复。

这是您想要的吗

select Name, Ascii_Name
from   yourtable
group by Name, Ascii_Name
having min(Alternate_names) <> max(Alternate_names)

通过查看从原始表中获得的结果集,我认为您希望找到名称&Ascii_名称相同,但不同的备用名称。请查找以下查询

DECLARE @Collection TABLE(

    Name            VARCHAR(MAX),
    Ascii_Name      VARCHAR(MAX),
    Alternate_names VARCHAR(MAX)

)

---- Tempory table data insert
INSERT INTO @Collection VALUES  ('Abat','Abat1','Abat, Abat1'),
                                ('Abayah','Abayah1','Abayah,Abayah1'),
                                ('Abayah','Abayah1','Abayah,Abayah1'),
                                ('Abat','Abat1','Abat, Abath')

-- Solution
SELECT  col1.Name,
        col1.Ascii_Name,
        col1.Alternate_names 
FROM @Collection col1
INNER JOIN @Collection col2 ON col1.Name = col1.Name AND col1.Ascii_Name = col2.Ascii_Name 
WHERE col1.Alternate_names <> col2.Alternate_names

我不太明白你的逻辑。您能进一步解释吗?@Squirrel在描述中添加了更多信息以便于澄清。因此,我发布的查询确实提供了您想要的内容?结果集必须包含备选名称,其中名称和Ascii名称对至少重复两次。@SreedharDanturthi-因为您的问题结果集中的结果集将重复2或更多更多根据备用名称,请尝试在问题中添加更多信息,以保持清晰。