2013-03-22 65 views
0

我有一個包含ID,狀態日期(序數)和狀態類型的數據集。在日期範圍內選擇最新的限定類型

  • 狀態類型是OpenTransferClose
  • 的主鍵是ID和狀態日期的組合。所以一個ID將有多個 記錄。

我試圖選擇包含最近狀態類型爲打開或傳輸的日期範圍內的ID的數據的子集。

SELECT id, 
     status_date, 
     Date_format(Str_to_date(status_date, '%Y%j'), '%m/%d/%Y'), 
     status_type 
FROM my.TABLE 
WHERE (((status_type = 'O') 
      OR (status_type = 'T')) 
     AND (status_date <= 2012182)) 

我應該使用MAX(Status_Date)還是LAST(Status_Date)函數?

回答

1

LAST不是有效的MySQL函數,所以MAX將是適當的函數。你也不需要所有的括號。

WHERE (status_type = 'O' 
      OR status_type = 'T') 
     AND status_date <= 2012182 

您也可以使用IN指定status_type列表。

WHERE status_type IN ('O', 'T') 
     AND status_date <= 2012182