我试图获取一段记录的唯一值数量。更具体地说,我有一个具有名称字段的设施表,但多年来大多数设施都更改了名称。我想找到每个设施的唯一名称。我在一次查询中返回所有这些值时遇到问题。下面是我创建的查询,但问题是它为我提供了每年设施的名称。我只想在名字改变的时候。
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
提前感谢您的任何建议。
答案 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