我在varchar中的数据有时是数字,有时是text。 我想在分组中将它从0到100和A到Z排序,但是它返回10,11,... 2它适用于文本,即A,B,C ......
我是否正在使用报告构建器2014。
答案 0 :(得分:0)
您可以在CASE
子句中使用ORDER BY
表达式:
;WITH Tbl(val) AS(
SELECT '1' UNION ALL
SELECT '10' UNION ALL
SELECT '2' UNION ALL
SELECT '3' UNION ALL
SELECT '15' UNION ALL
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'D' UNION ALL
SELECT 'E' UNION ALL
SELECT 'F' UNION ALL
SELECT 'Z'
)
SELECT *
FROM Tbl
ORDER BY
CASE WHEN val NOT LIKE '%[^0-9]%' THEN 0 ELSE 1 END,
CASE WHEN val NOT LIKE '%[^0-9]%' THEN CAST(val AS INT) END,
val
如果NOT LIKE '%[^0-9]%'
包含非数字字符, val
将返回false。
答案 1 :(得分:0)
向组属性添加三个排序参数:
排序方式:=CInt(IIF(Fields!ID.Value like "[0-9]*", 0, 1))
[A到Z]排序
然后:=CInt(IIF(Fields!ID.Value like "[0-9]*", Fields!ID.Value, 1))
[A到Z]
排序
然后通过:=Fields!ID.Value
[A到Z]排序