2017-07-28 74 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 爲了通過位置升序

相關問題