有人可以向我解释为什么这个查询没有按预期工作吗?
我想获得每个订单的最小值和最大值,其中值跨越多个列,订单可以有多个行。此外,并非所有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),而不是十进制:((顺便说一下,我继承了这个表)。我想我需要转换为十进制,一切都会很好。
答案 0 :(得分:0)
Value列的数据类型设置为nvarchar(50),其中它应为十进制。