【问题标题】:SSRS - T-SQL - Concatenate multiple rowsSSRS - T-SQL - 连接多行
【发布时间】:2012-08-29 21:25:34
【问题描述】:

我有连接多个表的 T-SQL 查询。我在 SSRS 中使用它作为数据集查询。我只选择两列,ID 和名称。我有三个具有相同“ID”值但三个不同“名称”值的记录。在 SSRS 中,我得到了第一个“名称”值,我需要连接所有三个具有相同 ID 的值,并将其放在表格的一个单元格中。

我该怎么做呢?

我正在使用查找来组合多维数据集 + sql 直接从表中提取 ID,但使用名称的 Case 语句来定义别名。

【问题讨论】:

    标签: visual-studio-2010 tsql reporting-services business-intelligence


    【解决方案1】:

    您可以在 TSQL 中使用PIVOT 将它们作为单独的列来完成此操作,然后您可以在报告单元格中组合这些列,或者您可以使用these 连接方法之一来获取一列中的所有名称。

    例如,您可以这样做:

    SELECT  SomeTableA.Id,
            STUFF(
              (SELECT ',' + SomeTableB.Names AS [text()]
               FROM SomeTable SomeTableB
               WHERE SomeTableB.Id = SomeTableA.Id
                        FOR XML PATH('')), 1, 1, '' )
            AS ConcatenatedNames
    FROM  SomeTable SomeTableA
    INNER JOIN AnotherTable
      ON SomeTableA.Id = AnotherTable.SomeId
    ...
    

    【讨论】:

    • 我有多个列(我只是在这个例子中提到了 ID 和名称;我不想将每一行 PIVOT 到列中。我只想将 1 列记录组合成一个字符串单元格。对于一个 ID,我有三行(相同的 ID 值),然后还有 1 列用于名称(3 个不同的名称)。此 T-SQL 代码将在 SSRS 中使用,因此它不起作用。我也在获取数据通过执行 INNER JOIN 从 MULTIPLE 表中。我被卡住了
    • 使用 FOR XML PATH 在 TSQL 中连接肯定会为您工作。 SSRS 只是将查询传递给数据库,因此任何有效的 SQL 都可以工作。您还可以将此逻辑移动到存储过程中,并从报告中调用它(推荐)。 Here 是另一个更清楚地演示串联的链接。请参阅更新的答案,了解如何执行此操作,包括连接到另一个表。
    猜你喜欢
    • 2010-12-24
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多