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

时间:2017-03-13 21:12:01

标签: sql-server

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

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 

提前感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

您可以从Year中删除group by,并为每个min()year获取Name UniqueId

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