我正在尝试根据下面的条件进行排序,其中我隐藏了一个带有“-”的数字值,我希望以这样的方式进行排序:不管我如何排序(desc,asc)“-”应该在顶部或底部,但它不影响我的排序,下面是一个示例,可以是负值或正值
before sorting 1 2 3 - 5 6 7 after sorting - 1 2 3 5 6 7
w1e3prcc1#
您可以将排序顺序表达式设置为
=Val(Fields!myColumn.Value)
这将为 - 行和其他行的数值。如果没有帮助,请编辑问题(而不是添加更多注解),并在报告中显示来自数据集查询的数据。
-
ql3eal8s2#
不清楚列的数据类型是什么,因为 - 不是数值。但是,无论类型如何,这都会满足您的要求:
order by col
如果列是数字 - 是 NULL ,这是因为升序排序 NULL 价值观优先。如果列是字符串 '-' 是价值,这是因为 '-' 在数字之前排序。这是一把小提琴。
NULL
'-'
zz2j4svz3#
使用 CASE 表达式:
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);
3条答案
按热度按时间w1e3prcc1#
您可以将排序顺序表达式设置为
这将为
-
行和其他行的数值。如果没有帮助,请编辑问题(而不是添加更多注解),并在报告中显示来自数据集查询的数据。
ql3eal8s2#
不清楚列的数据类型是什么,因为
-
不是数值。但是,无论类型如何,这都会满足您的要求:
如果列是数字
-
是NULL
,这是因为升序排序NULL
价值观优先。如果列是字符串
'-'
是价值,这是因为'-'
在数字之前排序。这是一把小提琴。
zz2j4svz3#
使用
CASE
表达式:实际上,似乎是在同一列中混合字符和数字数据。为了承受价值
-
,它必须是文本,因此我们可能需要做一些额外的工作,以确保文本编号正确排序: