2014-02-17 264 views
0

我有一份報告,可以從我的MFG軟件創建零件清單。該部分號碼列表目前看起來是這樣的:字母數字排序SSRS

DA100-12 
DA100-121 
DA100-122 
DA100-13 
DA100-131 

我希望他們進行排序考慮到在年底這樣的數字部分:

DA100-12 
DA100-13 
DA100-121 
DA100-122 
DA100-131 

有沒有人對如何內做到這一點建議一份報告?

回答

0

您可以在-處拆分,然後按數字最後一部分進行排序。一個解決辦法是做到這一點的基礎數據庫查詢已經,也許是這樣的:

SELECT PartNo, SUBSTR(PartNo, 1, CHARINDEX('-', PartNo)) AS PN, CONVERT(INT, SUBSTR(PartNo, CHARINDEX('-', PartNo) + 1, LEN(PartNo))) AS NumPart 

您可能需要tweek的SUBSTR指數了一下,我實際上並不能現在就試試這種權利。然後按PN和NumPart進行SSRS排序。查詢的結果應該是這個樣子:

PartNo  PN  NumPart 
--------------------------- 
DA100-12 DA100 12 
DA100-121 DA100 121 
DA100-122 DA100 122 
DA100-13 DA100 13 
DA100-131 DA100 131 

我敢肯定,你也可以做分裂在SSRS本身也是如此,在排序表達式。

+0

這實際上並不一致。我有很多格式的部件。有些是1234,1234-1234,AB123-123,AB123-123X等 – d90

+1

那麼,在那種情況下它將很難做到...... –

0

如果沒有'。',你也可以利用T-SQL函數PARSENAME做這個。你的數據中的字符以及是否總是有一個' - '分隔這些部分。 (最終,你可能會關閉重新設計的東西,因此部分名稱的兩個部分是在單獨的列更好。)

select * from Parts 
order by 
    PARSENAME(REPLACE(PartName,'-','.'),2), 
    CAST(PARSENAME(REPLACE(PartName,'-','.'),1) AS INT) 

Click here for a SQL Fiddle repro