2017-06-11 14 views
0

私は最初の3つの列が日、月、年である26列のテーブルを持っています。そして、私が見せなければならないいくつかの情報を持つ列の残りの部分。今私は年の最後の日に応じてレコードを取得する必要があります。 私はコードを書こうとしました。年の最終日に従ってレコードを選択してください

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

しかし、これは、毎月の最終日からレコードを取得し、私もyears.Andの最後の日にしたい、私はレコードに実際の最後の日持っていけない場合は、このコードは動作しません。だからLAST_DAYの代わりに、その月のMAX日付のような機能がほしいです。どのように私はこの機能を実装することができます。

+0

あなたは年の最後の日にしたい場合は、なぜあなたはちょうど12月をハードコードしていません、または私は何かを逃している? –

+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 
          ); 
関連する問題