【问题标题】:SSRS Query result in one cell based on other cells in the same rowSSRS 查询结果为一个单元格基于同一行中的其他单元格
【发布时间】:2017-09-19 20:31:56
【问题描述】:

还没有在 SSRS 中这样做,我正在摸不着头脑。

基本上,我有一个基于 DataSet 1 的 tablix。tablix 在名为 AssemblyName 的字段上进行排序和分组,它也是第一列值。第二列的值基于名为 Quantity 的字段的总和。 (在数据库表中,每一行都有一个 AssemblyName 值和一个 Quantity 值)

棘手的部分是:数据库中有另一个表,其中包含基于旧(原始)数据的 AssemblyName 和 Quantity 的“快照”。

在我的 Tablix 中,我想在同一行中显示一个单元格,该单元格对行的第一个单元格中的 AssemblyName 的旧数量求和。旧的 Quantities 将从包含旧数据的数据库表中提取。

基本上,目标是显示按 AssemblyName 分组和排序的 Tablix,并在 tablix 中具有以下列:Assembly Name(来自当前 DB 表)、当前 Quantity 总和(来自当前 DB 表)和旧的数量总和(来自另一个包含旧数据的数据库表)。

除了包含旧数据库表中旧数量总和的单元格之外,我一切正常。

旧的 DB 表在同一个数据库中,所以这不是问题,我的问题是,创建一个查询,根据同一 Tablix 行中 AssemblyName 的值对旧表中的 Quantities 求和。

我尝试使用基于从数据集 1 中提取的参数的查询创建数据集 2,然后在旧数量单元格中写入此表达式:

=Sum(Fields!Quantity.Value, "Dataset 2")

我在第三列的每个单元格中都得到了空白值,其中包含上面的表达式。我假设它是因为 Dataset 2 实际上并没有在同一 tablix 行中读取 AssemblyName 的值。然而,我想做的事情的本质是将包含 AssemblyName 的 tablix 中第一列的值传递给 Dataset 2 查询中的 WHERE 子句,其参数依次显示在第三列的单元格中相同的 tablix 行。

如果有帮助,来自 DataSet 2 的查询如下:

SELECT AssemblyName
, Quantity
FROM OldData
WHERE AssemblyName = @compare_AssemblyName

我希望这是有道理的,但请根据需要提出问题,以便我澄清。

问候。

【问题讨论】:

  • 也许我可以对数据集 1 的查询中的旧数量求和?
  • 你能展示一些来自两个数据集的样本数据吗?
  • 您尝试过查找吗?像这样的东西 =LookUp(Fields!AssemblyName.Value,Fields!AssemblyName.Value,Fields!Quantity.Value,"dataset_oldvalue")。

标签: sql reporting-services ssrs-2012 ssrs-tablix


【解决方案1】:

您应该能够在同一个查询中将旧数据与新数据一起拉入,然后对各个字段求和:

SELECT AssemblyName
    , NewQuantity = n.Quantity
    , OldQuantity = COALESCE(o.Quantity, 0)
FROM NewData n
    LEFT JOIN OldData o
        ON n.AssemblyName = o.AssemblyName
WHERE n.AssemblyName = @compare_AssemblyName

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多