SQL不是我的Forte,专家给你的一些帮助会很棒:)
数据集:
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()函数,但它只返回数据集中的最高值,而不是后面的数据。
答案 0 :(得分:2)
根据您的SQL Server版本(2008或更高版本),您可以使用以下变体:
SELECT
[Name Of Product],
(SELECT MAX(Val) FROM (VALUES ([Size 1]), ([Size 2]), ([Size 3])) AS value(val)) AS MaxSize
FROM MyTable
编辑:找到此代码的original来源,会根据该问题将您的问题标记为可能的重复。
答案 1 :(得分:2)
您可以使用UNPIVOT
拆分列,然后使用MAX()
将最大值变为简单的GROUP BY
针对相关的[Name of Product]
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];
答案 2 :(得分:0)
您可以使用嵌套的CASE语句。像这样:
SELECT [name of product], [part number], CASE WHEN size1 > size2 AND size1 > size 3 Then size1 ELSE CASE WHEN size2 > size 3 THEN size 2 ELSE size 3 END END
FROM ...