gpt4 book ai didi

sql - 从 SQL SERVER 中的 3 个值中获取较低的值

转载 作者:行者123 更新时间:2023-12-04 20:16:26 25 4
gpt4 key购买 nike

如何在 Sql Server 中获得 3 个值中的最低值?

同一个函数在 MySQL 中叫 LEAST,在 SQL Server 中比较?

最佳答案

您可以在没有嵌套案例的情况下执行此操作:

select (case when val1 < val2 and val1 < val3 then val1
when val2 < val3 then val2
else val3
end) as least_of_three

这似乎很清楚它在做什么。它也很容易概括。

一定要小心 NULL - LEAST 和 GREATEST 会忽略它们。如果需要处理这些,那就麻烦一点了:
select (case when val1 <= coalesce(val2, val1) and val1 <= coalesce(val3, val1) then val1
when val2 <= coalesce(val3, val2) then val2
else val3
end) as least_of_three

请注意,我已将“<”更改为“<=”。我使用合并通过评估为真来“忽略”该值。因此,如果 val2 为空,则 val1 始终小于 val2。我选择这种方法是因为它适用于所有数据类型(字符串、数字、日期)。

编辑:

我通常不会回去写七年前的问题的答案,但这个问题显然是 SQL Server。最好的方法是使用 apply :
select t.*, max_val
from t cross apply
(select max(v.val) as max_val
from (values (t.val1), (t.val2), . . .
) v(val);

请注意,此解决方案在 MySQL 中不起作用,因为它不支持横向连接。

关于sql - 从 SQL SERVER 中的 3 个值中获取较低的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com