テーブルをそれ自体に結合したままにしたり、ケースステートメントを使用してビュー内の最大値を割り当てたりするにはどうすればよいか疑問に思っていました。次のテーブルがあるとします。
Lastname Firstname Filename
Smith John 001
Smith John 002
Smith Anna 003
Smith Anna 004
すべての値をリストするビューを作成したいのですが、次のように、現在の行が最大行であるかどうかを表示する別の列もあります。
Lastname Firstname Filename Max_Filename
Smith John 001 NULL
Smith John 002 002
Smith Anna 003 NULL
Smith Anna 004 NULL
これは可能ですか?次のクエリを試しました。
SELECT Lastname, Firstname, Filename, CASE WHEN Filename = MAX(FileName)
THEN Filename ELSE NULL END AS Max_Filename
しかし、Lastname は group by 句に含まれていないと言われました。ただし、Lastname、firstname、filename でグループ化すると、max_filename 内のすべてが filename と同じになります。
私が間違っていることと、このクエリを機能させる方法を理解するのを手伝ってもらえますか?