Sql SSRS中基于正负值的带条件排序

Sql SSRS中基于正负值的带条件排序,sql,reporting-services,ssrs-2012,Sql,Reporting Services,Ssrs 2012,我试图根据下面的条件进行排序,其中我隐藏了一个带有“-”的数值,我想以一种方式进行排序,无论我如何排序(desc,asc)“-”都应该位于顶部或底部,但它不会影响我的排序,下面是一个示例 和-可以是负值或正值 before sorting 1 2 3 - 5 6 7 after sorting - 1 2 3 5 6 7 使用大小写表达式进行排序: SELECT * FROM yourTable ORDER BY CASE WHEN col = '-' THEN 0 ELSE

我试图根据下面的条件进行排序,其中我隐藏了一个带有“-”的数值,我想以一种方式进行排序,无论我如何排序(desc,asc)“-”都应该位于顶部或底部,但它不会影响我的排序,下面是一个示例 和-可以是负值或正值

before sorting  
1
2
3
-
5
6
7

after sorting 
-
1
2
3
5
6
7

使用
大小写
表达式进行排序:

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);

使用
大小写
表达式进行排序:

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);

可以将排序顺序表达式设置为

=Val(Fields!myColumn.Value)
这将为
-
行返回零,并为其他行返回数值


如果没有帮助,请编辑问题(而不是添加更多注释),并在报告中显示来自数据集查询的数据的外观。

您可以将排序顺序表达式设置为

=Val(Fields!myColumn.Value)
这将为
-
行返回零,并为其他行返回数值


如果这没有帮助,请编辑问题(而不是添加更多注释),并在报告中显示来自数据集查询的数据的外观。

由于
-
不是数值,因此不清楚该列的数据类型

但是,无论类型如何,这都符合您的要求:

order by col
如果列是一个数字,而
-
NULL
,这会起作用,因为升序排序将
NULL
值放在第一位

如果列是一个字符串,并且
'-'
是值,这是因为
'-'
在数字之前排序


是一个dbfiddle。

不清楚列的数据类型是什么,因为
-
不是数值

但是,无论类型如何,这都符合您的要求:

order by col
如果列是一个数字,而
-
NULL
,这会起作用,因为升序排序将
NULL
值放在第一位

如果列是一个字符串,并且
'-'
是值,这是因为
'-'
在数字之前排序


是一个Dfiddle。

谢谢,但我需要ssrs表达式谢谢,但我需要ssrs表达式中的
'-'
不是一个数值,所以我不理解你的问题。
'-'
不是一个数值,所以我不理解你的问题。