首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SSRS中将多行转换为一行?

如何在SSRS中将多行转换为一行?
EN

Stack Overflow用户
提问于 2016-04-13 18:07:36
回答 2查看 6.5K关注 0票数 0

我的MSSQL查询用下面的authcodes显示了雇员层次结构的数据

代码语言:javascript
运行
复制
ManagerName     EmployeeName    AuthCode
Tim             Peter           csr2
Tim             Peter           sup
Tim             Peter           itil
Tim             Colt            csr2
Tim             Colt            sup

SSRS报告显示下面列出的结果,当我选择report parameter= Tim时,结果只显示顶部一行,而不显示后续AuthCodes,而查询显示所有

代码语言:javascript
运行
复制
EmployeeName    AuthCode
Peter           csr2
Colt            csr2

我希望数据显示如下(它应该连接员工的创作代码):

代码语言:javascript
运行
复制
EmployeeName    AuthCode
Peter           csr2, sup, itil
Colt            csr2, sup

有谁能建议我在SSRS中需要做些什么,以便数据显示所有带有逗号分隔值的作者代码?

EN

回答 2

Stack Overflow用户

发布于 2016-04-13 20:54:13

这应该是可行的:

代码语言:javascript
运行
复制
=JOIN(LOOKUPSET(Fields!EmployeeName.Value, Fields!EmployeeName.Value, Fields!AuthCode.Value, "DataSet1"), ", ")

LookupSet基于EmployeeName获取所有的AuthCodes。

联接使用逗号分隔符将数组转换为字符串。

票数 3
EN

Stack Overflow用户

发布于 2019-11-22 06:43:49

汉诺威拳的一些补充:

如果需要区分连接+查找结果,则可以

转到报表的属性-> Code 制表符

在报表属性中添加一些VB代码

代码语言:javascript
运行
复制
Public Shared Function RemoveDuplicates(m_Array As Object()) As String()

    System.Array.Sort(m_Array)
    Dim k As Integer = 0
    For i As Integer = 0 To m_Array.Length - 1
        If i > 0 AndAlso m_Array(i).Equals(m_Array(i - 1)) Then
            Continue For
        End If
        m_Array(k) = m_Array(i)
        k += 1
    Next

    Dim unique As [String]() = New [String](k - 1) {}
    System.Array.Copy(m_Array, 0, unique, 0, k)
    Return unique

End Function

并编辑单元格表达式:

代码语言:javascript
运行
复制
=JOIN( Code.RemoveDuplicates( LOOKUPSET(Fields!EmployeeName.Value, Fields!EmployeeName.Value, Fields!AuthCode.Value, "DataSet1")), ", ")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36606236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档