以下の内容はhttps://hishidama.hatenablog.com/entry/62dc62629be348fadbdcb3c6a1ec37b8より取得しました。


SQL to AsakusaFW:ある値がMAXであるレコードの取得

AsakusaFW & Tsurugi Advent Calendar 2021の7日目です。

ある値が最大であるレコードを取得するSQLは、以下のように書きます。

select * from テーブル1 t1
where カラム1 = (select MAX(カラム1) from テーブル1 t2 where t2.カラム2 = t1.カラム2)
;

これを単純にAsakusaFW化すると、サブクエリーでひとつのOperatorを作り、さらにそれと結合するCoGroup演算子なりGroupViewなりが必要となります。
が、AsakusaFWではGroupSort演算子ひとつで実現できるので、むしろSQLより簡単です。

@GroupSort
public void getMaxRecord(
  @Key(group = {"カラム2"}, order = {"カラム1 desc"} @Once Iterable<テーブル1> inList,
  Result<テーブル1> out
) {
  for (テーブル1 in : inList) {
    out.add(in);
    break;
  }
}

カラム1を降順に並べて先頭1レコードを取れば、カラム1が最大であるレコードを取得できます。
(カラム1が最大であるレコードが複数ある場合は、カラム1が先頭レコードと同一である間だけ出力するようにすればいいです)




以上の内容はhttps://hishidama.hatenablog.com/entry/62dc62629be348fadbdcb3c6a1ec37b8より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14