首页 > 解决方案 > SQL-如何获得多列的最大值但我只有 1 行

问题描述

我试图获得只有 1 行(多列)的最大值。我看过的所有教程都是多行的。

怎样才能返回最大值(4943)?谢谢!

我的桌子

标签: sqlmaxsql-order-byunion

解决方案


显然,如果可能的话,这个表应该被规范化为一个不会发生这个问题的更合适的结构,例如

CREATE TABLE Test
(
   [Id] INT IDENTITY(1, 1)
   [Pop] INT,
   [From] INT,
   [To] INT
)

这将使解决方案变得微不足道。

但是,使用当前的结构,我们可以通过使用UNPIVOT 运算符来解决这个问题。假设您上面的表格被调用test,并且有 4 个类似类型的列被称为p1, p2, p3, p4. 然后以下查询将完成请求

SELECT MAX(pop) 
FROM (SELECT * FROM test WHERE Id = [InsertIdHere]) AS TableFilteredToDesiredOneRow
UNPIVOT
(
    pop
    FOR ThePs IN (p1, p2, p3, p4)
) AS U

这消除了对任何容易出错的大型条件块的需要。


推荐阅读