問題:座標緯度/ LNGS的表。兩行可能具有相同的座標。我們需要一個返回一組具有唯一座標的行的查詢(在返回集內)。請注意,distinct
不可用,因爲我需要返回按定義區分的id列。這類作品(@maxcount
是我們所需要的行數,intid
是一個獨特的INT ID列):SQL服務器蘭特()聚合
select top (@maxcount) max(intid)
from Documents d
group by d.geoLng, d.geoLat
它總是會返回同一行對於給定的不幸的座標,這是一種恥辱位爲我的用途。如果我們有一個rand()
聚集,我們可以用它代替max()
......注意,你不能與newid()
創建的GUID使用max()
。
任何想法? (有一些更多的背景在這裏,如果你有興趣:http://www.itu.dk/~friism/blog/?p=121)
UPDATE:完整的解決方案here
如果用`newid()`代替`intid`的順序,這實際上是有效的。 `partition'似乎強加了一些順序(這很有道理),所以必須重新調整外部查詢中的結果。沒有這種洗牌,所有的行都選擇到了極端的南方:-)。 – friism 2008-12-10 19:42:08