SQL CASE表达式未选择3列中的最大值,也不是MAX

问题描述 投票:0回答:1

我正在尝试在3列中找到最大的行值。我尝试了几种方法,但都失败了。

原始数据:

| +────────────────────+++──────────────── ──────++────────────| max_adsl_predicted_down | max_sfbb_predicted_down | max_ufbb_predicted_down |+────────────────────+++────────────────── ────+────────────────| 10 | 60 | -1 || 10 | 80 | 350 || 10 | 1 | -1 || | | |+────────────────────+++────────────────── ────+──────────────────++

所需输出:+─────────────| max_download |+─────────────| 60 || 350 || 10 || |+─────────────

数据示例和用于生成它的SQL

'''SQL

选择顶部(379)rnmax_adsl_predicted_down,max_sfbb_predicted_down,max_ufbb_predicted_down从表

'''

15 80 -115 80 -115 80 -115 80 -115 80 -115 80 -110 80 35010 80 350

使用CASE表达式:


SELECT TOP(379) 
    CASE WHEN max_ufbb_predicted_down > max_adsl_predicted_down AND max_ufbb_predicted_down > max_sfbb_predicted_down THEN max_ufbb_predicted_down
         WHEN max_sfbb_predicted_down > max_adsl_predicted_down AND max_sfbb_predicted_down > max_ufbb_predicted_down THEN max_sfbb_predicted_down
         WHEN max_adsl_predicted_down > max_sfbb_predicted_down AND max_adsl_predicted_down > max_ufbb_predicted_down THEN max_adsl_predicted_down
    END AS max_download
FROM table

8080808080808080

使用MAX表达式:

“”“ SQL选择顶部(379)(选择最大(速度)从(VALUES(max_ufbb_predicted_down),(max_adsl_predicted_down),(max_sfbb_predicted_down))作为速度(speeds))AS max_download从表

“”“

8080808080808080

我不明白为什么这些方法没有连续返回最高值。您能否提出解决方案或这些方法不起作用的原因?

谢谢,

我正在尝试在3列中找到最大的行值。我尝试了几种方法,但都失败了。原始数据:| +──────────────────+++────────────── ────────+────────...

sql-server max case multiple-columns
1个回答
0
投票

SQL Server不像其他许多数据库一样支持标量GREATEST函数。取而代之的是,我们可以使用CASE表达式:

© www.soinside.com 2019 - 2024. All rights reserved.