Sql 当一行有一个最大值时,则获取一个字符串值";是的;?
我认为这应该是一个快速的方法,但如何识别表的最大值并给它一个字符串标签“Yes” 我知道在这方面有一个案例陈述,但只是需要一些指导 范例Sql 当一行有一个最大值时,则获取一个字符串值";是的;?,sql,group-by,max,greatest-n-per-group,window-functions,Sql,Group By,Max,Greatest N Per Group,Window Functions,我认为这应该是一个快速的方法,但如何识别表的最大值并给它一个字符串标签“Yes” 我知道在这方面有一个案例陈述,但只是需要一些指导 范例 ID Amount Max 110 1000 111 1000 112 2000 Yes 113 1000 您可以使用窗口功能: select t.*, case when amount = max(amount) over () then 'Yes' end from
ID Amount Max
110 1000
111 1000
112 2000 Yes
113 1000
您可以使用窗口功能:
select
t.*,
case when amount = max(amount) over () then 'Yes' end
from mytable t
一些RDBMS不喜欢空的over()
子句,在这种情况下,您可以使用rank()
:
select
t.*,
case when rank() over(order by amount desc) = 1 then 'Yes' end
from mytable t
:
id | amount | case
--: | -----: | :---
110 | 1000 | null
111 | 1000 | null
112 | 2000 | Yes
113 | 1000 | null
id |金额|案例
--: | -----: | :---
110 | 1000 |零
111 | 1000 |零
112 | 2000 |是
113 | 1000 |零
如果DBMS不支持窗口函数,则可以使用子查询:
select t.*,
(case when t.amount = (select max(t1.amount) from table t1) then 'Yes' else '' end) as Max
from table t;
如果您想改为
null
,可以在case中删除else
子句 请用您正在使用的数据库标记您的问题:oracle、mysql、sql server。。。?