Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Penyesuaian Kueri SQL

; 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
)
, positions AS (
  SELECT MMSI
       , Message_ID
       , "Time"
       , Latitude
       , Longitude
  FROM   dbo.DecodedCSVMessages_Staging
  WHERE  Message_ID IN (1, 3)
  AND    EXISTS (
           SELECT *
           FROM   valid_positions
           WHERE  valid_positions.MMSI = DecodedCSVMessages_Staging.MMSI
         )
)
, details 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 positions.MMSI
     , positions.Message_ID
     , positions."Time"
     , details.Ship_Type
     , details.Vessel_Name
     , positions.Latitude
     , positions.Longitude
FROM   positions
 INNER
  JOIN details
    ON details.MMSI    = positions.MMSI
   AND details.row_num = 1 -- Limit to "latest" ship details per MMSI

Sekarang ada CTE ke-3 yang digunakan.

  1. valid_positions :apa saja catatan di mana koordinatnya sesuai dengan kriteria Anda, untuk Message_ID apa pun 2)
  2. positions :semua catatan di mana Message_ID sama dengan 1 atau 3 dan ada catatan dalam MMSI yang sesuai di valid_positions
  3. details :tidak berubah dari sebelumnya. Menampilkan detail kapal/kapal "terbaru" (Message_ID =5)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Seberapa penting urutan kolom dalam indeks?

  2. Bagaimana cara memformat angka dengan koma di T-SQL?

  3. Data kueri dari kolom XML di SQL Server

  4. Bagaimana Memperbaiki Kesalahan Microsoft SQL Server 926? - Terselesaikan

  5. Cara Mengonfigurasi Microsoft® ODBC Driver 11 untuk SQL Server® di RedHat Linux dengan PHP