我似乎对此深感困惑,并且四处寻找找不到解决方案。
我有一个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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句