SQL检索Min&使用UNPIVOT在多列中最大值

时间:2014-04-10 08:51:19

标签: sql sql-server max min unpivot

有人可以向我解释为什么这个查询没有按预期工作吗?

我想获得每个订单的最小值和最大值,其中值跨越多个列,订单可以有多个行。此外,并非所有5个值列都包含数据。

表的结构如下:

Order | Value_A | Value_B | Value_C | Value_D | Value_E
00001 | 10.20   | 15.47   |         |         |         
00002 | 40.20   | 15.47   |         |         |         
00003 | 01.80   |         |         |         |         
00004 | 18.99   | 18.99   | 18.99   | 18.99   | 18.99   

我的疑问是:

SELECT  Order, MIN(v) AS MinValue, MAX(v) AS MaxValue
FROM    Table_Test
UNPIVOT ( v FOR nValue IN ( Value_A, Value_B, Value_C, Value_D, Value_E ) ) as U
GROUP BY Order
ORDER BY Order

它几乎完美无缺,但由于某种原因,MinValues对所有订单都没有返回。

非常感谢任何帮助。

非常感谢。

[编辑]

我刚刚意识到数据类型是nvarchar(50),而不是十进制:((顺便说一下,我继承了这个表)。我想我需要转换为十进制,一切都会很好。

1 个答案:

答案 0 :(得分:0)

Value列的数据类型设置为nvarchar(50),其中它应为十进制。