我似乎被卡住了,无法找到解决方案。SQL - 选择连续的最大值
我有一个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
不过,我觉得这是相当缓慢尤其是我的表比我上面显示的片段更大量的列。
任何想法?
在此先感谢。
UNION ALL可能更快,但可能不是最好的解决方案。 – jarlh
哪个数据库? – Bohemian
如果你真的有20列,那么你可以搜索内置函数。那失败了,也许你可以创建一个自定义函数。 –