2017-06-11 75 views
0

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

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

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

+0

如果你想在一年的最後一天,那麼你爲什麼不只是硬編碼月,或者我錯過了什麼? –

+0

將日期作爲單個實體存儲 – Strawberry

+0

我可以有多條記錄,因此它必須是動態的。這就是爲什麼我不能硬編碼它 – karan

回答

1

這是你想要的嗎?

select * 
from subscription_stats 
where month = 12 and day = 31; 

返回12月31日的行。

如果你沒有對所有天的記錄,並且希望在最後一天的數據:

select ss.* 
from subscription_stats ss 
where (ss.month, ss.day) = (select ss2.month, ss2.day 
          subscription_stats ss2 
          where ss2.year = ss.year 
          order by ss2.month desc, ss2.day desc 
          ); 
相關問題