我以前从未见过这种情况,所以我很好奇是否有人知道为什么,也许我怎么能纠正它。
我的代码的这一部分:
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代码。我已经从其他人那里复制了它(当然在这个网站上),所以我知道这可能与它有关。
答案 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
注释的星号表示添加的行。
(我在评论中回答,但在此处添加此内容以保持一致性/永久性)。