选择Distinct with multi field

时间:2013-05-16 21:24:25

标签: sql select distinct

我创建了一个按名称搜索事件的查询。结果列出具有相同名称的事件年份(2012年12月10日至2013年4月30日)。我的问题是如何让我的查询只显示我想要选择的年份中的事件具有相同的名称。

例如:我只想看看这个月或今年同名的事件。

查询:

SELECT
    UserField03, GageNumber, GageType, LastCheckOutDate, CurrentLocation 
FROM 
    Gages
WHERE 
    GageNumber IN (SELECT DISTINCT Gages.GageNumber
                   FROM Gages 
                   INNER JOIN Events ON Gages.GageID = Events.GageID
                   WHERE (Name = 'Returned to Cal')
                  ) 
ORDER BY 
    LastCheckOutDate

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

SELECT UserField03, GageNumber, GageType, LastCheckOutDate, CurrentLocation
FROM Gages INNER JOIN
(SELECT GageID FROM Events eo WHERE eo.Name 
    IN(SELECT e.Name FROM Events e WHERE e.DateOfEvent BETWEEN '2012-10-12' AND '2013-04-30' AND e.Name='Returned to Cal'
    GROUP BY e.Name HAVING COUNT(*) > 1) AND  e.DateOfEvent BETWEEN '2012-10-12' AND '2013-04-30')  EveAlias
ON Gages.GageID=EveAlias.GageID

在最嵌套的子选择中,您将获得事件的名称,这些事件满足日期和名称条件,并且其名称出现多次(HAVING COUNT(*) > 1)在定义的时间段内。在外部选择中,您将获得{{ 1}}此类事件,因此您可以使用GageId执行最终加入。