#はじめに
掲題の件について、色々調べてみたのですがどうしても分からなかった為、質問させていただきました。
どうぞ宜しくお願い致します。
#質問内容の詳細
例えば以下のようなテーブルがあったとします。(あくまでも例です。ご留意ください。)
このときに、一番最近の日付(この例で行くと2021/3/15)の行データを全て取得するクエリを生成したい、というのが今回の質問です。
一番最近の日付を取得するには、year→month→dayの順番で最大値を比較する必要があると認識しています。
また、最大値の比較対象列(今回でいうとyear,month,day)以外のカラムも全て取得したいです。
より詳細にお伝えしますと、今回の例に限らず、複数行で比較の優先付けを行いながら(今回の場合、①yearを比較→②monthで比較…といった形で、カラム毎に比較順位が存在する)、最大値の行を丸々取得するようなクエリを書くにはどうすれば良いのか?というのが今回知りたい事です。
#環境
SQL Server 13.0.4259
#知っていること
比較対象列を結合させたカラムを作り、そのカラムを比較する、という手法は知っています。
しかし、この手法では、私の認識している限り、集計関数(今回だとMax)を用いねばならず、集計対象外のカラムが取得できません。
(以下のクエリでは、本来、桁揃えなどが必要になる事は認識していますが、単純化するために省略しています)
◆クエリ
SELECT MAX(year + month + day) as union
FROM this_table
#その他調べてみたこと
以下のサイトは、限りなく本件の答えであろうと認識していますが、
今回の質問のようなケースでどのようなクエリを書けば良いのかまでは具体例が無いため、わかりかねる状態です。
同一グループの中で最大のレコードを取得する SQL を書く
http://labs.timedia.co.jp/2014/10/selecting-max-record-in-group-by.html
以上、どうぞ宜しくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/15 08:18