SQL Serverの地理的機能を使用して、顧客に最も近い10のブランチオフィスを把握しようとしています。これは私が一人の顧客のために欲しいものを私に取得します。変数を使用してすべてのレコードを選択する
DECLARE @me GEOGRAPHY
DECLARE @HH NVARCHAR(50)
SELECT @Me = CustProspLoc, @HH = HHKEY FROM Customers
SELECT DISTINCT TOP(10) @HH AS CustOmer, BranchNum, CONVERT(DECIMAL(10,1), (BranchLoc.STDistance(@me))/1609.344) AS Miles, BranchLoc.STDistance(@me)
FROM
BranchLocations
WHERE CONVERT(DECIMAL(10,1), (BranchLoc.STDistance(@me))/1609.344) < 25 -- less than this many miles
ORDER BY Miles
、結果はこのようなものです:
Customer BranchNum Miles
------------------ --------- ---------------------------
20192 14 1.8
20192 145 4.4
20192 193 5.3
20192 7 6.0
20192 17 7.4
20192 8 7.6
20192 3 8.7
20192 2 9.3
20192 9 9.8
20192 1 10.0
しかし、私が得るすべては私はそれを得ることができますどのように...その1人の顧客のための結果でありますCustomersテーブルのすべての顧客?
を使用してみてください、あなたのテーブル構造を共有していただけますか? – Siyual
2つのもの: 1)あなたの結果はTOP 10に限られています。それを削除し、結果がどのように見えるかを確認してください。おそらく理由#2のために問題ではないでしょう。 2)1つの変数に複数の値を割り当てることはできません。 – dfundako
ヒープ/リスト/配列を持つことができる非構造化言語ではなく、SQLを使用していることを理解する必要があります。私はあなたのデータを一時テーブルまたはCTEに挿入して、あなたの顧客がそれをフィルタリングするように試みます。 –