2016-03-01 70 views
0

我從來沒有見過這種情況,所以我很好奇,如果有人知道爲什麼,也許我可以如何糾正它。爲什麼我的SSRS結果與SQL SMS不同?

我的代碼這種特殊的部分:在這種情況下

SELECT inv_num, co_line, 
    STUFF((
     SELECT '/' + rs2.inv_pro_description 
     FROM @ReportSet rs2 
     WHERE rs2.inv_num = rs.inv_num AND 
     rs2.co_line = rs.co_line 
     FOR XML PATH('')), 1, 1, '') as ipd_combo 
FROM @ReportSet rs 
WHERE inv_pro_seq IS NOT NULL AND inv_pro_description <> 'Less Previously Invoiced' 
GROUP BY inv_num, co_line 

結果在我的兩個結果的正確拼接,例如,「10%預付款/固定$ 5要求」。但是,當在SSRS中使用此過程時,我的字段將包含「固定$ 5必需/提前10%」。

我已經習慣於能預測基礎上運行的SQL查詢我的SSRS報告,所以這讓我感到困惑。

我真的不明白當然STUFF/XML路徑代碼。我從其他人(自然地在本網站上)複製它,所以我知道這可能與它有關。

+0

我意外地發現,如果在上面的代碼中將'/'替換爲'/',它會正常工作。 (SQL SMS不變)。原來的代碼有一個',',而這產生了與'/'相同的問題。那麼......關於添加這些空間使SSRS開始工作? – DaveX

+0

...現在它再次無法正常工作。代碼與以前沒有什麼不同,相同的數據等。 – DaveX

+1

嘗試添加一些'order by'條件? – APH

回答

2

爲了獲得一致的排序,添加order by條款自己內心的選擇:

SELECT inv_num, co_line, 
    STUFF((
     SELECT '/' + rs2.inv_pro_description 
     FROM @ReportSet rs2 
     WHERE rs2.inv_num = rs.inv_num AND 
     rs2.co_line = rs.co_line 
     ORDER BY rs2.inv_pro_seq --******** 
     FOR XML PATH('')), 1, 1, '') as ipd_combo 
FROM @ReportSet rs 
WHERE inv_pro_seq IS NOT NULL AND inv_pro_description <> 'Less Previously Invoiced' 
GROUP BY inv_num, co_line 

註釋的星號表示添加的行。

(我在評論中回答,但爲了一致性/永久性添加此處)。

+1

這是一個很好的提醒我總是擔心ORDER。它看起來像數據存儲的方式是隨機的,即使我知道它有一些潛在的原因,所以訂購它是一個好主意,即使它看起來並不需要它。 – DaveX

相關問題