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

Why are my results in SSRS different from 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% Advance/Fixed $5”。但是,在 SSRS 中使用此过程时,我的字段包含 "Fixed Required/10% Advance".

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

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

要获得一致的排序,请将 order by 子句添加到您的内部 select:

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

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

(我在评论中回答,但在这里添加这个是为了 consistency/permanency)。