別の識別子でグループ化されたMAX(id)のリストを返したい単一のテーブルがあります。ただし、特定の基準を満たすと、その基準を満たさない行を「切り詰める」3番目の列があります。
おそらく例で説明する方が簡単です。サンプルテーブルには次のものがあります。
UniqueId(int)GroupId(int)IsPriority(ビット)
生データ:
UniqueId GroupId IsPriority
-----------------------------------
1 1 F
2 1 F
3 1 F
4 1 F
5 1 F
6 2 T
7 2 T
8 2 F
9 2 F
10 2 F
したがって、groupId 1の行にはIsPriorityが設定されていないため、最高のUniqueId(5)を返します。groupId 2にはIsPriorityが設定された行があるため、その値(7)で最高のUniqueIdを返します。
したがって、出力は次のようになります。
5
7
これをブルートフォースする方法を考えることはできますが、1回のクエリでこれを実行できるかどうかを確認しています。