; WITH valid_positions AS ( SELECT MMSI , Message_ID , "Time" , Latitude , Longitude FROM dbo.DecodedCSVMessages_Staging WHERE Latitude> 55 AND Latitude <85 AND Longitude> 50 AND Longitude <141), position AS ( SELECT MMSI , Message_ID , "Time" ,緯度、経度 FROM dbo.DecodedCSVMessages_Staging WHERE Message_ID IN (1, 3) AND EXISTS ( SELECT * FROM valid_positions WHERE valid_positions.MMSI =DecodedCSVMessages_Staging.MMSI ))、詳細 AS ( SELECT MMSI 、 Ship_Type 、 Vessel_Name 、 Row_Number() OVER (PARTITION BY MMSI ORDER BY "Time" DESC) As row_num FROM dbo.DecodedCSVMessages_Staging WHERE Message_ID =5) SELECT ポジション.MMSI , ポジション.メッセージ_ID , ポジション.「時間」 , details.Ship_Type , details.Vessel_Name , ポジション.Latitude , ポジション.LongitudeFROM ポジションINNER JOIN の詳細 ON details.MMSI =pos itions.MMSI AND details.row_num =1 -- MMSI ごとの「最新」の船の詳細に制限
現在、3 番目の CTE が使用されています。
<オール>valid_positions
:任意 任意の Message_ID
について、座標が基準に適合するレコード 2)ポジション
:Message_ID
のすべてのレコード 1 または 3 に等しい および 対応する MMSI
にレコードがあります valid_positions
で 詳細code> :以前と変わらない。 「最新」の船/船舶の詳細を表示します (Message_ID
=5)