我的MSSQL sql查询显示带有authcodes的Employee Hierarchy数据,如下所示
ManagerName EmployeeName AuthCode
Tim Peter csr2
Tim Peter sup
Tim Peter itil
Tim Colt csr2
Tim Colt sup
SSRS报告显示下面列出的结果,当我选择报告参数= Tim 时,结果只显示顶行而不是后续的AuthCodes,而查询显示所有
EmployeeName AuthCode
Peter csr2
Colt csr2
我希望数据显示(它应该连接员工的authcodes):
EmployeeName AuthCode
Peter csr2, sup, itil
Colt csr2, sup
有人可以建议我在SSRS中需要做什么,以便数据显示所有带逗号分隔值的authcodes?
答案 0 :(得分:2)
这应该有效:
=JOIN(LOOKUPSET(Fields!EmployeeName.Value, Fields!EmployeeName.Value, Fields!AuthCode.Value, "DataSet1"), ", ")
LookupSet 根据EmployeeName获取所有AuthCodes。
JOIN 使用逗号分隔符将数组转换为字符串。
答案 1 :(得分:0)
除了汉诺威拳手的答案:
如果您需要与众不同的join + lookupset结果,则可以
转到报告的属性-> Code
tab
在报表属性中添加一些VB代码(图1)
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
并编辑单元格表达式:
=JOIN( Code.RemoveDuplicates( LOOKUPSET(Fields!EmployeeName.Value, Fields!EmployeeName.Value, Fields!AuthCode.Value, "DataSet1")), ", ")