use*_*348 1 sql t-sql sql-server max aggregate-functions
我想知道如何将表自身联接起来或使用case语句在视图中分配最大值。说我有下表:
Lastname Firstname Filename
Smith John 001
Smith John 002
Smith Anna 003
Smith Anna 004
Run Code Online (Sandbox Code Playgroud)
我想创建一个列出所有值但又有另一列显示当前行是否为最大行的视图,例如:
Lastname Firstname Filename Max_Filename
Smith John 001 NULL
Smith John 002 002
Smith Anna 003 NULL
Smith Anna 004 NULL
Run Code Online (Sandbox Code Playgroud)
这可能吗?我尝试了以下查询:
SELECT Lastname, Firstname, Filename, CASE WHEN Filename = MAX(FileName)
THEN Filename ELSE NULL END AS Max_Filename
Run Code Online (Sandbox Code Playgroud)
但是我被告知姓氏不在group by子句中。但是,如果我按姓,名,文件名分组,则max_filename中的所有内容都与文件名相同。
您能否帮助我了解我在做什么错以及如何使此查询正常工作?
实际上,您非常接近,但是max您可以将其max用作窗口函数,而不是使用简单的聚合:
select
Lastname, Firstname, Filename,
case
when Filename = max(Filename) over(partition by Lastname, Firstname) then Filename
else null
end as Max_Filename
from Table1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |