Sql server 如何在SQL中查询多年来同一记录的唯一值

Sql server 如何在SQL中查询多年来同一记录的唯一值,sql-server,Sql Server,我试图获得一个记录随时间变化的唯一值的数量。更具体地说,我有一个设施表,其中有一个名称字段,但大多数设施多年来都更改了名称。我想找到每个设施的唯一名称。我很难在一个查询中返回所有这些值。下面是我创建的查询,但问题是它给了我每年的设施名称。我只想当名字改变的时候 Select Distinct HAE.Name ,HAE.UniqueId ,S.Year FROM HAEntity HAE INNER JOIN Survey S ON

我试图获得一个记录随时间变化的唯一值的数量。更具体地说,我有一个设施表,其中有一个名称字段,但大多数设施多年来都更改了名称。我想找到每个设施的唯一名称。我很难在一个查询中返回所有这些值。下面是我创建的查询,但问题是它给了我每年的设施名称。我只想当名字改变的时候

Select Distinct HAE.Name
            ,HAE.UniqueId
            ,S.Year
FROM HAEntity HAE
        INNER JOIN Survey S ON HAE.SurveyId=S.SurveyId
GROUP BY UniqueId, Name, Year
ORDER BY UniqueId, Name, Year 
提前感谢您的建议。

您可以在之前从组中删除年份,并获得每个姓名和唯一ID的最小年份


您可以分享一些样本数据和预期输出吗?名称UniqueId Year Hillsdale社区卫生中心46152 2013 Hillsdale社区卫生中心46152 2014 Hillsdale医院46152 2015 Hillsdale医院46152 2016 Hanks,我认为SqlZim已经解决了您的问题!谢谢,这很有帮助,如果我只想要名称已更改的设施,是否可以排除名称保持不变的设施?@DCity35我已更新了答案,以包含where exists子句,以检查UniqueId在HAEntity表中是否有其他名称。这就是你想要的吗?非常感谢@SqlZim我感谢你的帮助,这就是我想要做的@DCity35很乐意帮忙!
Select Distinct HAE.Name
            ,HAE.UniqueId
            ,min(S.Year) as Year
FROM HAEntity HAE
        INNER JOIN Survey S ON HAE.SurveyId=S.SurveyId
/* where facilities have had at least 1 name change */
where exists (
  select 1
    from HAEntity i
    where i.UniqueId = hae.UniqueId
    and i.Name<>hae.Name
    )
GROUP BY UniqueId, Name
ORDER BY UniqueId, Name, Year