Reporting services 字母数字排序

Reporting services 字母数字排序,reporting-services,Reporting Services,我有一份从我的制造软件创建零件清单的报告。零件号列表当前如下所示: DA100-12 DA100-121 DA100-122 DA100-13 DA100-131 DA100-12 DA100-13 DA100-121 DA100-122 DA100-131 SELECT PartNo, SUBSTR(PartNo, 1, CHARINDEX('-', PartNo)) AS PN, CONVERT(INT, SUBSTR(PartNo, CHARINDEX('-', PartNo) + 1

我有一份从我的制造软件创建零件清单的报告。零件号列表当前如下所示:

DA100-12
DA100-121
DA100-122
DA100-13
DA100-131
DA100-12
DA100-13
DA100-121
DA100-122
DA100-131
SELECT PartNo, SUBSTR(PartNo, 1, CHARINDEX('-', PartNo)) AS PN, CONVERT(INT, SUBSTR(PartNo, CHARINDEX('-', PartNo) + 1, LEN(PartNo))) AS NumPart
PartNo      PN      NumPart
---------------------------
DA100-12    DA100   12
DA100-121   DA100   121
DA100-122   DA100   122
DA100-13    DA100   13
DA100-131   DA100   131
我希望他们在排序时考虑结尾的数字部分,如下所示:

DA100-12
DA100-121
DA100-122
DA100-13
DA100-131
DA100-12
DA100-13
DA100-121
DA100-122
DA100-131
SELECT PartNo, SUBSTR(PartNo, 1, CHARINDEX('-', PartNo)) AS PN, CONVERT(INT, SUBSTR(PartNo, CHARINDEX('-', PartNo) + 1, LEN(PartNo))) AS NumPart
PartNo      PN      NumPart
---------------------------
DA100-12    DA100   12
DA100-121   DA100   121
DA100-122   DA100   122
DA100-13    DA100   13
DA100-131   DA100   131

有没有人对如何在报告中实现这一点提出建议

您可以在
-
处拆分,然后按最后一部分进行数字排序。一种解决方案是已经在基础数据库查询中执行此操作,可能如下所示:

DA100-12
DA100-121
DA100-122
DA100-13
DA100-131
DA100-12
DA100-13
DA100-121
DA100-122
DA100-131
SELECT PartNo, SUBSTR(PartNo, 1, CHARINDEX('-', PartNo)) AS PN, CONVERT(INT, SUBSTR(PartNo, CHARINDEX('-', PartNo) + 1, LEN(PartNo))) AS NumPart
PartNo      PN      NumPart
---------------------------
DA100-12    DA100   12
DA100-121   DA100   121
DA100-122   DA100   122
DA100-13    DA100   13
DA100-131   DA100   131
您可能需要稍微查看一下
SUBSTR
索引,我现在实际上无法尝试。然后按PN和NumPart对SSR进行排序。查询结果应如下所示:

DA100-12
DA100-121
DA100-122
DA100-13
DA100-131
DA100-12
DA100-13
DA100-121
DA100-122
DA100-131
SELECT PartNo, SUBSTR(PartNo, 1, CHARINDEX('-', PartNo)) AS PN, CONVERT(INT, SUBSTR(PartNo, CHARINDEX('-', PartNo) + 1, LEN(PartNo))) AS NumPart
PartNo      PN      NumPart
---------------------------
DA100-12    DA100   12
DA100-121   DA100   121
DA100-122   DA100   122
DA100-13    DA100   13
DA100-131   DA100   131

我很确定,您也可以在SSRS本身的排序表达式中进行拆分。

如果数据中没有“.”字符,并且始终只有一个“-”分隔部分,您也可以利用T-SQL函数PARSENAME进行拆分。(最终,您最好重新设计部件,使部件名称的两个部分位于单独的列中。)


.

事实上并不那么一致。我有很多格式的零件。有些是1234、1234-1234、AB123-123、AB123-123X等。