为什么我的SSRS结果与SQL SMS不同?

时间:2016-03-01 17:32:31

标签: sql-server tsql reporting-services ssrs-2008-r2

我以前从未见过这种情况,所以我很好奇是否有人知道为什么,也许我怎么能纠正它。

我的代码的这一部分:

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

导致我的两个结果的正确连接,例如,&#34; 10%预付/固定$ 5必需&#34;在这种情况下。但是,在SSRS中使用此过程时,我的字段包含#34;固定$ 5必需/ 10%预付&#34;。

我已经习惯于能够根据运行的SQL查询来预测我的SSRS报告,所以这让我很困惑。

我当然不太了解STUFF / XML PATH代码。我已经从其他人那里复制了它(当然在这个网站上),所以我知道这可能与它有关。

1 个答案:

答案 0 :(得分: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

注释的星号表示添加的行。

(我在评论中回答,但在此处添加此内容以保持一致性/永久性)。