1

データベースからポイントを選択するために、以下のクエリがあります。「2013-09」のポイントだけが欲しいので、少し調整する必要があります。AND "Time" LIKE '2013-09%' を単純に追加してみましたが、0 レコードが生成されるため、うまくいかないようです。また、データベースには今年一致するレコードが含まれているという事実も知っています。これは、以下のクエリを使用して (時間選択部分を削除して) すべてのレコードを選択したためです。問題は何ですか?

; WITH positions AS (
  SELECT MMSI
       , Message_ID
       , "Time"
       , Latitude
       , Longitude
  FROM   dbo.DecodedCSVMessages_Staging
  WHERE  Message_ID IN (1, 3)
  AND    Latitude  > 45
  AND    Latitude  < 85
  AND    Longitude < -50
  AND    Longitude > -141
  AND "Time" LIKE '2013-09%' <- this is where I'd put it
)
, details AS (
  SELECT MMSI
       , Ship_Type
       , Vessel_Name
       , IMO
       , 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
     , details.IMO
     , positions.Latitude
     , positions.Longitude
FROM   positions
 INNER
  JOIN details
    ON details.MMSI    = positions.MMSI
4

2 に答える 2

0

2013 年 9 月の値のみが必要な場合は、これを試すことができます。

AND "Time" >= '2013-09-01'
AND "Time" < '2013-10-01' 
于 2013-10-28T19:08:31.710 に答える
0

を使用する理由はありませんLIKE。この行を次のように変更します。

AND [Time] > '2013-09-01'
于 2013-10-28T19:04:43.883 に答える