Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Корекция на SQL заявка

<предварителен код>; С valid_positions AS (ИЗБЕРЕТЕ MMSI, Message_ID, "Time" , Latitude , Longitude FROM dbo.DecodedCSVMessages_Staging WHERE Latitude> 55 AND Latitude <85 AND Longitude> 50 AND Longitude <141), позиции 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 )), подробности AS ( SELECT MMSI , Ship_Type , Vessel_Name , Row_Number() OVER (PARTITION BY) MMSI ORDER BY "Time" DESC) Като 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.LongitudeFROM позиции INNER JOIN детайли ON детайли.MMSI =поз itions.MMSI И details.row_num =1 -- Ограничение до „най-новите“ данни за кораба на MMSI

Сега се използва 3-ти CTE.

  1. валидни_позициисякакви записва, където координатите отговарят на вашите критерии, за всеки Message_ID 2)
  2. позиции :всички записи, където Message_ID е равно на 1 или 3и има запис в съответния MMSI в валидни_позиции
  3. подробности :непроменен от преди. Показва „най-новите“ подробности за кораба/съда (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. Заявката е неуспешна с HTTP състояние 401:Неупълномощено В SSRS

  2. Първо подредете по конкретен идентификатор, след това по останалите

  3. Използвайте няколко думи във входния низ за търсене на пълен текст

  4. Преобразувайте текстовата стойност в SQL Server от UTF8 в ISO 8859-1

  5. Peta Poco where клауза