【问题标题】:Sorting with condition in based on negative and positive value in SSRS根据SSRS中的负值和正值对条件进行排序
【发布时间】:2020-05-21 09:37:55
【问题描述】:
我正在尝试根据以下条件进行排序,其中我用“-”隐藏了一个数值但它不影响我的排序,下面是一个例子
和 - 可以是负值或正值
before sorting
1
2
3
-
5
6
7
after sorting
-
1
2
3
5
6
7
【问题讨论】:
标签:
sql
reporting-services
ssrs-2012
【解决方案1】:
您可以将排序顺序表达式设置为类似
=Val(Fields!myColumn.Value)
这将为- 行返回零,为其他行返回数值。
如果这没有帮助,请编辑问题(而不是添加更多 cmets)并在报告中显示来自您的数据集查询的数据。
【解决方案2】:
目前还不清楚该列的数据类型是什么,因为- 不是数值。
但是,无论类型如何,这都可以满足您的需求:
order by col
如果列是一个数字并且- 是NULL,这是因为升序排序会将NULL 值放在首位。
如果列是字符串且'-' 是值,则此方法有效,因为'-' 在数字之前排序。
Here 是一个 dbfiddle。
【解决方案3】:
使用CASE 表达式排序:
SELECT *
FROM yourTable
ORDER BY
CASE WHEN col = '-' THEN 0 ELSE 1 END,
col;
实际上,您似乎在同一列中混合了字符和数字数据。为了承载值-,它必须是文本,所以我们应该做一些额外的工作来确保文本数字正确排序:
SELECT *
FROM yourTable
ORDER BY
CASE WHEN col = '-' THEN 0 ELSE 1 END,
TRY_CONVERT(NUMERIC(10), col);