2017-06-09 133 views
0

我有26個列,其中前3列是日,月,年的表。其他專欄有一些我必須展示的信息。現在我必須根據月份的最後一天獲取記錄。 我試過寫代碼。根據月份的最後一天選擇記錄

select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day)) 

但是這會從每個月的最後一天取得記錄。當我沒有真正的最後一天在記錄中,那麼這段代碼將無法工作。因此,而不是LAST_DAY,我希望在該月份有一些功能,例如MAX日期。我怎樣才能實現這個功能。

回答

1

您希望數據中每個月的最後日期。對於這一點:

select s.* 
from subscription_stats s 
where s.day = (select max(s2.day) 
       from subscription_stats s2 
       where s2.year = s.year and s2.month = s.month 
      ); 

雖然它不會使這個查詢簡單得多,你應該存儲日期爲日期在表格中。也就是說,一個日期,而不是三個年/月/日的單獨列。

+0

感謝Gordon Linoff非常迅速地給予正確回答。有用。 – karan

+0

你能告訴我怎樣才能獲取數據只有幾年的最後一天? – karan

+0

@karan。 。 。子查詢只會比較年份,而不是月份。 –