Объединение нескольких таблиц результатов SQL - PullRequest
0 голосов
/ 12 сентября 2018

Мне нужно создать файл CSV из результатов SQL. Однако мне не удалось объединить запрос для получения одного результата. Кто-нибудь может мне помочь?

Вот первый запрос.

Select 
    Vessel.Name, Vessel.Code, PositionCurrent.Latitude, 
    PositionCurrent.Longitude, PositionCurrent.FixTime 
From 
    Vessel
Inner Join 
    PositionCurrent ON Vessel.ID = PositionCurrent.VesselId

Результат первого запроса:

Name      | Code      | Latitude | Longitude   | FixTime
----------+-----------+----------+-------------+--------------------- 
477852800 | 477852800 | 1.637975 | 104.6479433 | 2017-07-07 23:25:23
Manyplus  | 584552215 | 1.87415  | 102.5528412 | 2016-05-03 15:27:58

А вот и второй запрос. Мне удалось сделать это только для одного запроса.

DECLARE @g geometry;  

SET @g = geometry::STPointFromText('POINT ('+PositionCurrent.Longitude+' 
'+PositionCurrent.Latitude+')', 4326);

Select Country 
From [eztble].[dbo].[EEZ_1]  
where geom.STIntersects(@g) = 1; 

И результат будет отображать только название округа

Singapore

Кто-нибудь может мне помочь сделать его полностью рассчитанным для всей таблицы выше, чтобы результат был как ниже?

Name --------Code -------      Latitude  --- Longitude ----- FixTime ----------------- Country

477852800 | 477852800 | 1.637975 | 104.6479433 | 2017-07-07 23:25:23 | Singapore
Manyplus  | 584552215 | 1.87415  | 102.5528412 | 2016-05-03 15:27:58 | Indonesia

Спасибо.

1 Ответ

0 голосов
/ 12 сентября 2018

Просто установите @g внутри вашего первого запроса:

Select Vessel.Name, Vessel.Code, PositionCurrent.Latitude, PositionCurrent.Longitude, 
PositionCurrent.FixTime,geometry::STPointFromText('POINT ('+PositionCurrent.Longitude+' 
'+PositionCurrent.Latitude+')', 4326) as g From Vessel
Inner Join PositionCurrent ON Vessel.ID = PositionCurrent.VesselId

, а затем соедините его со вторым столом.

 Select Vessel.Name, Vessel.Code, PositionCurrent.Latitude, PositionCurrent.Longitude, 
    PositionCurrent.FixTime,Country From Vessel
    Inner Join PositionCurrent ON Vessel.ID = PositionCurrent.VesselId
Inner Join [eztble].[dbo].[EEZ_1]  on
geom.STIntersects(geometry::STPointFromText('POINT ('+PositionCurrent.Longitude+' 
    '+PositionCurrent.Latitude+')', 4326))=1; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...