Я пытаюсь создать выбор матрицы происхождения/назначения с помощью SQL Server 2008. Я хочу найти ближайшие 5 сайтов на любом данном сайте.SQL Server 2008: Пространственный запрос - возврат 5 ближайших сайтов
Матрица должна содержать идентификатор происхождения, идентификатор назначения и расстояние между ними. До сих пор мне удалось получить что-то, работающее на одном сайте, но я хочу перебирать каждую строку в моей таблице. Я ударил стену, чтобы выяснить, как это сделать, может ли кто-нибудь помочь? Я только хочу вернуть пункт назначения, если он находится в пределах 2,5 км от места происхождения.
Рабочий код для моего одного происхождения сайта ниже (я хочу тот же результат, но в том числе и все строки, как происхождения):
SP_Geometry моя география колонка (MapInfo названия этого столбца по умолчанию при использовании EasyLoader)
DECLARE @Point1 AS Geography
DECLARE @Point1ID AS Nvarchar (255)
SELECT @Point1=SP_Geometry FROM SitesTable WHERE Label = 'ID1'
SELECT @Point1ID = Label FROM SitesTable WHERE Label = 'ID1'
SELECT TOP 5
@Point1ID AS Origin
,@Point1 AS Origin_SP_Geometry
,@Point1.STDistance(SP_Geometry) AS Distance
,@Label AS Destination
,SP_Geometry AS Destination_SP_Geometry
FROM SiteTable
WHERE @Point1.STDistance(SP_Geometry) <2500
ORDER BY @Point1.STDistance(SP_Geometry)
Выполнение вышеуказанных результатов в следующем отборе:
+--------+---------------------+-------------+-------------+----------------------------+
| Origin | Origin_SP_GEOMETRY | Distance | Destination | Destination_SP_GEOMETRY |
+--------+---------------------+-------------+-------------+----------------------------+
| ID1 | 0xE6100000010CDD(…) | 0 | ID1 | 0xE6100000010CDD772D9D(…) |
| ID1 | 0xE6100000010CDD(…) | 395.7739586 | ID867 | 0xE6100000010C2466CDFA5(…) |
| ID1 | 0xE6100000010CDD(…) | 407.6394398 | ID2500 | 0xE6100000010C6FBC54(…) |
| ID1 | 0xE6100000010CDD(…) | 1033.827269 | ID91 | 0xE6100000010C3981C0353(…) |
| ID1 | 0xE6100000010CDD(…) | 1082.667065 | ID1540 | 0xE6100000010CD03BFCD2(…) |
+--------+---------------------+-------------+-------------+----------------------------+
в идеале это именно то, что я хочу, но у меня возникают проблемы е установление любого типа цикла (который должен был объединять исходный код ID2, ID3 и т. д.)
Любая помощь была бы высоко оценена!
Это работает отлично! Спасибо. –