sql - 返回一组列中最高值的最佳实践?

标签 sql sql-server

SQL 不是我的强项,如果能得到各位专家的帮助那就太棒了:)

数据集:

 Name of Product  |  Part Number   |   Size 1  |  Size 2 |  Size 3
------------------|----------------|-----------|---------|----------
      Item1       |    12345       |     4     |    4    |     6
      Item2       |    54321       |     4     |    5    |     4
      Item3       |    54123       |     6     |    2    |     2

我需要返回 3 个尺寸中的最高值并将它们聚合到一列中。

Item1  |  6
Item2  |  5
Item3  |  6

谷歌搜索只让我找到了 MAX() 函数,但它只是返回数据集中的最高值,这不是我想要的。

最佳答案

您可以使用 UNPIVOT 来拆分列,然后最大值就变成一个简单的 MAX(),并使用 GROUP BY 与相关[产品名称]

SELECT [Name of Product], Max(TheSize)
FROM Table1
UNPIVOT
(
    [TheSize]
    FOR Size in ([Size 1], [Size 2], [Size 3])
) x
GROUP BY [Name of Product];

SqlFiddle is back online - example here

关于sql - 返回一组列中最高值的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29830103/

相关文章:

mysql - 在 mybatis 查询中使用一些硬编码值

mysql - 如何选择在项目上工作时间最长的员工

sql-server - SQL Server 从触发器触发异步更新?

sql-server - SQL中的条件外键

SQL Server Case 语句不过滤记录

mysql - SQL用户排名取决于信誉点

mysql - MySQL子查询的限制

sql-server - 如何在 Join 中包含 Null 值?

sql-server - 你的 Nvarchar() 有多大?

Mysql查询两个外键到一个主键