Ich versuche, einige der geografischen Features von SQL Server zu verwenden, um herauszufinden, was die 10 nächstgelegenen Niederlassungen eines Kunden sind. Das bekommt mir, was ich für einen Kunden wollen:Wählen Sie alle Datensätze mit Variablen aus
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
Und das Ergebnis ist wie folgt aus:
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
Aber alles, was ich bekommen ist Ergebnisse für diesen einen Kunden ... wie kann ich es für alle Kunden in der Tabelle Kunden?
mit Können Sie bitte Ihre Tabellenstrukturen teilen? – Siyual
Zwei Dinge: 1) Sie haben Ihre Ergebnisse auf TOP 10 beschränkt. Entfernen Sie das und sehen Sie, wie die Ergebnisse aussehen. Wahrscheinlich wird es aus Gründen # 2 nicht wichtig sein. 2) Sie können keiner Variablen mehrere Werte zuweisen. – dfundako
Sie müssen verstehen, wir verwenden SQL und nicht einige unstrukturierte Sprache, wo Sie Heaps/Listen/Arrays haben können. Ich werde versuchen, Ihre Daten in eine temporäre Tabelle oder CTE einzufügen und Ihren Kunden davon abzufiltern. –