【问题标题】:SQL Server Report Builder Combining mutliple tablesSQL Server Report Builder 组合多个表
【发布时间】:2013-02-07 18:47:02
【问题描述】:

我有两个数据集,它们通过 ID 号相关联。我正在尝试生成一个报告,其中表一中的一行将用于表二中所有相关数据的节标题。这有点令人困惑,所以这里有一些图片。

数据集 1

ID   Company  Total Sales
1    ACME      23000
2    AJAX      43222
3    STACK     56700

数据集 2

ID  ITEM   DESC   QTY
1    A     ADESC   3 
1    B     BDESC   3
1    C     CDESC   4
2    D     DDESC   2
2    E     EDESC   4
3    F     FDESC   5

这就是我想让报告看起来的样子。

1  ACME   23000
   A   ADESC   3
   B   BDESC   3
   C   CDESC   4
2  AJAX    43222
   D   DDESC   2
   E   EDESC   4
3  STACK   56700
   F   FDESC   5

有谁知道如何在报表生成器中执行此类操作。我对报告生成器很陌生,不知道在这里寻找什么?任何帮助将不胜感激。

【问题讨论】:

  • 表1和表2是数据库表吗?
  • 它们是报表生成器中的数据集。
  • 真正唯一的解决方法是创建一个子报表并将 id 链接在一起......或者您可以简单地创建另一个包含您需要的所有必需数据的数据集,并将它们分组到表中

标签: sql sql-server reporting-services reportbuilder3.0


【解决方案1】:

我更喜欢选项 1,但我有 2 个选项可以帮助您完成任务。

选项 1 - 如果数据集来自同一数据库:

如果您创建一个 SQL 并在所有详细信息行中包含标题会更好。您希望您的 SQL 生成以下内容:

ID  COMPANY  TOTAL SALES  ITEM  DESC   QTY
1    ACME     23000        A     ADESC  3 
1    ACME     23000        B     BDESC  3 
1    ACME     23000        C     CDESC  4 
2    AJAX     43222        D     DDESC  2
2    AJAX     43222        E     EDESC  4 
3    STACK    56700        F     FDESC  5

编辑 - 示例 SQL(未优化):

SELECT *
FROM   ( /*your data set 1 sql*/ ) DS1,
       ( /*your data set 2 sql*/ ) DS2
WHERE  DS1.ID = DS2.ID

完成此操作后,您应该按照 tablix 向导并按Id 分组。为了充分利用向导,我只会将 Id 放入 tablix 并将数据集 2 列作为详细信息放入向导中并完成向导。

然后将列插入组并添加数据集 1 列。

选项 2- 如果数据集位于不同的数据库中或无法修改:

按照最后一个选项使用数据集 2,确保包含 Id 的组。

然后插入其他 2 列并使用 LookUpLookUpSet 函数从数据集 2 中提取数据。

【讨论】:

  • 所有值都来自同一个数据库。 total_sales 列是由 SUM SQL 函数生成的,这就是为什么它位于单独的表中,因为我必须在 group by 子句中包含所有其他列。
  • @ReidMac,这没问题,我已经根据这里的信息添加了一个示例 sql,并且没有优化但永远不会少。您可以使用窗口函数,但没有数据库方案,我无法推测示例。
猜你喜欢
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多