0

現在、データベースの人口統計の生成に取り組んでおりgeography、テーブルの 1 つにデータ型を追加しました。人口統計については、他のものを使用して列の最大、最小、および平均を生成する必要があります。

使用する

select MIN(Location) FROM SpatialTable

地理データ型が比較できないため、機能しませんでした。

だから私は次のクエリを使用しました:

SELECT Location 
FROM SpatialTable 
WHERE Location.Lat IN (SELECT MIN(Location.Lat) 
                       FROM SpatialTable 
                       WHERE Location.Long IN (SELECT MIN(Location.Long) 
                                               FROM SpatialTable))

基本的に経度が最小のレコードを選択し、それらのレコードの中から緯度が最小のレコードを選択します。しかし、これは次のように、最初の MIN 緯度が選択され、その中で MIN 経度が選択される別の方法でも実行できます。

SELECT 
    Location 
FROM 
    SpatialTable 
WHERE 
    Location.Long IN
        (SELECT MIN(Location.Long) 
         FROM SpatialTable 
         WHERE Location.Lat IN (SELECT MIN(Location.Lat) FROM SpatialTable))

これにより、異なる結果が生じる可能性があります。

地理データを正確に比較する方法はありますか。SQL Server 2008 R2 エディションを使用しており、テーブルには geography タイプの Location 列が 1 つと ID 列が 1 つあります。

4

2 に答える 2

0

地理に関係なく、ROW_NUMBER()関数を使用してカスタム基準の最小値 (または最大値) を持つ行を取得できます。

SELECT x.* FROM 
(
    SELECT *
        , ROW_NUMBER() OVER (ORDER BY Location.Lat, Location.Long) RN
    FROM SpatialTable
) x
WHERE x.RN = 1
于 2013-08-12T11:50:33.130 に答える