Sql 选择两个或多个字段的最大值/最小值
是否有与以下功能等效的快捷方式功能:Sql 选择两个或多个字段的最大值/最小值,sql,sql-server,tsql,Sql,Sql Server,Tsql,是否有与以下功能等效的快捷方式功能: CASE WHEN FieldA > FieldB THEN FieldA WHEN FieldA < FieldB THEN FieldB END 但是在TSQL中有什么捷径吗?出于好奇,其他DBMS语言是否有这样的内置函数?您似乎想要的是best()和least()。大多数数据库都提供这些非常有用的功能。我们可以游说微软添加它们 同时,apply的一个古怪用法可以解决这个问题: select t.*,
CASE
WHEN FieldA > FieldB
THEN FieldA
WHEN FieldA < FieldB
THEN FieldB
END
但是在TSQL中有什么捷径吗?出于好奇,其他DBMS语言是否有这样的内置函数?您似乎想要的是
best()
和least()
。大多数数据库都提供这些非常有用的功能。我们可以游说微软添加它们
同时,apply
的一个古怪用法可以解决这个问题:
select t.*, maxcol
from t cross apply
(select max(col) as maxcol
from (values (fieldA), (fieldB), (fieldC)
) v(col)
) m;
您似乎想要的是
最大的()
和最小的()
。大多数数据库都提供这些非常有用的功能。我们可以游说微软添加它们
同时,apply
的一个古怪用法可以解决这个问题:
select t.*, maxcol
from t cross apply
(select max(col) as maxcol
from (values (fieldA), (fieldB), (fieldC)
) v(col)
) m;
您可以在@或#临时表中插入所有文件,然后选择最大值或最小值。@MrTux我在问题中提到了该线程中给出的答案,我只是想看看是否有更有效的方法,或者如下面的答案所述,可以将其添加到TSQL中,特别是当它以其他语言存在时,您可以在@或#临时表中插入所有文件,然后选择最大值或最小值。@MrTux我在问题中提到了该线程中给出的答案,我只是想看看是否有更有效的方法,或者,如下面的答案所述,它可以添加到TSQL中,特别是如果它存在于其他语言中
select t.*, maxcol
from t cross apply
(select max(col) as maxcol
from (values (fieldA), (fieldB), (fieldC)
) v(col)
) m;