2017-07-28 72 views
0

我正在尝试从NumberOfDuplicates获取其他KeyLocationIDs。我想排除Min(KeyLocationID)并想要其他列表。获取除最小值以外的所有标识

select CompanyID, Location, EventCode, count(*) as NumberOfDuplicates, min(KeyLocationID) as KeepThisOne 
from trip.KeyLocations 
group by CompanyID, Location, EventCode 
having count (*) > 1 
order by location asc 
+1

包括'WHERE KeyLocationID>分钟(KeyLocationID)''之前GROUP BY' –

回答

0

你在这里丢失的是哪里的陈述。 有几种方法可以做到这一点,这里有一些例子: 通过@nobody 作为sugested或者你可以这样做:

select CompanyID, Location, EventCode, count(*) as NumberOfDuplicates, 
min(KeyLocationID) as KeepThisOne 
from trip.KeyLocations 
group by CompanyID, Location, EventCode 
having KeyLocationID > min(KeyLocationID) 
order by location asc 

,或者你可以这样做:

select CompanyID, Location, EventCode, count(*) as NumberOfDuplicates, 
min(KeyLocationID) as KeepThisOne 
from trip.KeyLocations 
group by CompanyID, Location, EventCode 
having KeyLocationID != MIN(KeyLocationID) 
order by location asc 
+1

不幸的是这两个返回的:聚合不应出现在WHERE子句中,除非它位于包含在HAVING子句或选择列表中的子查询中,并且被聚合的列是外部引用。 –

+0

你说得对,对不起。你应该把这些放在有... –

+0

你有一个例子,我不熟悉你的意思 –

0

选择CompanyID,地点, EVENTCODE,计数(),如从trip.KeyLocations 其中 KeyLocationID未在(SELECT MIN(KeyLocationID)从trip.KeyLocations组由CompanyID,地点,EVENTCODE) NumberOfDuplicates 通过CompanyID,地点,EVENTCODE 组具有计数()> 1 为了通过位置升序

相关问题