我有一个带有动态排序时间过滤器的动态查询,它会创建每个值的产品项目的降序排序顺序,在大多数情况下是预期的。:
ROW_NUMBER() OVER (PARTITION BY T.Time_Calculation ORDER BY SUM(T.[Displayed Value 1]) DESC) +2 end AS DisplayItem_SortOrder
现在捕获:我有一个数据集类型(这由WHERE子句中的字段设置),其中负数也来了,在这种情况下,我需要从最高负数(ASC)到最高正浮点数据类型值排序。
ABS()不能解决这个问题,因为中间会出现一些正数。
我试图添加一个CASE语句,但似乎“ASC”和“DESC”不是可以添加的内容。
任何建议将不胜感激。
Display Name DisplayItem_SortOrder Displayed Value 1
Product1 3 -31454.61396
Product10 4 -3407.16712
Product2 5 -708.9942251
Product3 6 123.5454381
Product6 7 428.6027531
Product5 8 454.4814295
Product4 9 454.9838374
Product9 10 455.54
Product8 11 471.54
答案 0 :(得分:4)
我认为你正在寻找这样的东西:
创建并填充示例数据(请在将来的问题中将此步骤保存为我们)
DECLARE @T AS Table
(
col int
)
INSERT INTO @T VALUES
(1), (2), (3), (4), (-1), (-2), (-3), (5)
查询:
SELECT col
FROM @T
ORDER BY CASE WHEN col < 0 THEN 0 ELSE 1 END,
ABS(col)
结果:
col
-1
-2
-3
1
2
3
4
5