gpt4 book ai didi

tsql - 在 T-SQL 中聚合 GREATEST

转载 作者:行者123 更新时间:2023-12-01 05:02:35 25 4
gpt4 key购买 nike

我的 SQL 生锈了——我有一个简单的要求来计算两列值中较大值的总和:

CREATE TABLE [dbo].[Test]
(
column1 int NOT NULL,
column2 int NOT NULL
);

insert into Test (column1, column2) values (2,3)
insert into Test (column1, column2) values (6,3)
insert into Test (column1, column2) values (4,6)
insert into Test (column1, column2) values (9,1)
insert into Test (column1, column2) values (5,8)

在 SQL Server 中没有 GREATEST 函数的情况下,我可以使用以下方法获取两列中较大的一个:

select column1, column2, (select max(c) 
from (select column1 as c
union all
select column2) as cs) Greatest
from test

我希望我可以这样简单地总结它们:

select sum((select max(c) 
from (select column1 as c
union all
select column2) as cs))
from test

但没有骰子:

Msg 130, Level 15, State 1, Line 7
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

这在 T-SQL 中是否可以不求助于过程/临时表?

更新:Eran,谢谢 - 我使用了这种方法。然而,我的最终表达有点复杂,我想知道这种情况下的性能:

SUM(CASE WHEN ABS(column1 * column2) > ABS(column3 * column4)
THEN column5 * ABS(column1 * column2) * column6
ELSE column5 * ABS(column3 * column4) * column6 END)

最佳答案

试试这个:

 SELECT SUM(CASE WHEN column1 > column2 
THEN column1
ELSE column2 END)
FROM test

关于tsql - 在 T-SQL 中聚合 GREATEST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/243277/

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