gpt4 book ai didi

SQL - 选择一行中的最大值

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

我似乎被困在这个问题上,环顾四周找不到解决方案。

我有一个 SQL 表,它的第一行看起来像这样:

Name   Val1   Val2   Val3
John 1000 2000 3000

我需要做的是选择该行中的最大值,即 3000
显然,如果这些值在列而不是行中,您可以使用 SELECT MAX(column) FROM table获取列中的最大值。 是否有等价于在一行中查找最大值?

我也看过 PIVOT的用途和 UNPIVOT但我不认为它们在这里对我有用..

我能够做到的唯一方法是创建一个临时表并将每个值插入到单个列中,如下所示:
CREATE TABLE #temp (colvals float)
INSERT INTO #temp (colvals)
SELECT Val1 FROM table WHERE ID=1
UNION
SELECT Val2 FROM table WHERE ID=1
UNION
SELECT Val3 FROM table WHERE ID=1
--------------------------------------------
SELECT MAX(colvals) FROM #temp
--------------------------------------------
DROP TABLE #temp

但是我觉得这很慢,尤其是因为我的表格的列比我上面显示的代码段多得多。

有任何想法吗?

提前致谢。

最佳答案

您可以通过 APPLY 为列构建引用表并使用本地 MAX()

-- Sample Data
declare @data table (Name varchar(10), Val1 int, Val2 int, Val3 int, Val4 int, Val5 int, Val6 int)
insert @data values
('John', 1000, 2000, 3000, 4000, 5000, 6000),
('Mary', 1, 2, 3, 4, 5, 6)


select Name, MaxValue from
@data
cross apply
(
select max(value) as MaxValue
from
(values
(Val1),(Val2),(Val3),(Val4),(Val5),(Val6) -- Append here
) t(value)
) result

SQL Fiddle

关于SQL - 选择一行中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34038822/

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