SSRS - 根据 varchar 列对每页的多行进行分组
SSRS - Grouping multiple rows per page based on varchar column
我正在尝试创建一个 SSRS 报告,该报告将在单个页面上显示每个人、每个会计期间(月)的所有时间表。但是,我正在努力弄清楚应该如何对结果进行分组。到目前为止,我似乎能做的就是让每一页的每个指定用户出现一行。
我的 T-SQL 看起来像这样:
SELECT tblADSI.DisplayName AS FullName,
ds.[Date of Work],
ds.Hours,
ds.[Description of Work],
ds.Mileage,
ds.Subsistence,
ds.[Activity Code] AS CompanyRef,
c.[Cost Center] AS DiaryClient,
r.Role,
c.Description AS Project,
ds.[Accounting Period],
ds.[Rechargeable Items]
FROM [Diary Sheets] ds
LEFT JOIN Commissions c on c.[Commission Code] = ds.[Commission Code]
LEFT JOIN dbo.Roles r on r.Commission = ds.[Commission Code] and r.EmployeeID = ds.EmployeeID
LEFT JOIN [Accounting Period] ap ON ap.ID = ds.[Accounting Period ID]
LEFT JOIN (SELECT displayName,
EmployeeID FROM OpenQuery (
ADSI,
'SELECT
displayName,
EmployeeID
FROM ''LDAP://example.domaincontroller.com/OU=Unit1,DC=domaincontroller,DC=com''
WHERE objectCategory = ''person''
AND objectClass = ''User''
') AS tblADSI
UNION
SELECT displayName,
EmployeeID
FROM OpenQuery (
ADSI,
'SELECT
displayName,
EmployeeID
FROM ''example.domaincontroller.com/OU=Unit2,DC=domaincontroller,DC=com''
WHERE objectCategory = ''person''
AND objectClass = ''User''
') AS tblADSI
) AS tblADSI
ON tblADSI.EmployeeID = ds.employeeID
WHERE c.[Commission Code] = 'Example Commission'
AND ap.[Accounting Period] = 'Febuary 2015'
ORDER BY FullName, ds.[Date of Work], ds.[Activity Code]
SQL 的示例输出是。
-- Name Date Of Work Hours
John Smith 01/02/2015 9
John Smith 02/02/2015 10
Jane Doe 01/02/2015 5
Jane Doe 02/02/2015 5
Mike Smith 01/02/2015 8
Mike Smith 02/02/2015 9
因此,使用上面的 SQL 作为我的示例,我构建了一个报告,该报告应在特定佣金中每页显示每个用户(基于用户设置的佣金参数)。然而,报告中似乎只显示一行(2 月会计期间的最新条目),仅此而已。例如:
-- Name Date Of Work Hours
John Smith 01/02/2015 9
Jane Doe 01/02/2015 5
Mike Smith 01/02/2015 8
我实际上需要它来显示每个用户在会计期间的所有日记表,所以在报告中,以 John Smith 为例,它会显示为:
-- Name Date Of Work Hours
John Smith 01/02/2015 9
John Smith 02/02/2015 10
对于新页面上的每个其他用户,依此类推。
有人知道我怎样才能做到这一点吗?我研究并尝试了一些 SSRS 分组(我怀疑这是解决方案)但我完全不知所措。无论我尝试什么类型的分组,结果总是一样的。
我已经写 SQL 几年了,但我对 SSRS 比较陌生,而且我的 SSRS 知识完全是自学的,所以我的一些 terminology/formatting 可能不正确。
我设法通过将 SELECT 语句中的所有列添加为我的 tablix 上的父行组来修复它。感谢 mxix 和 NickyvV 的建议,非常感谢。
我正在尝试创建一个 SSRS 报告,该报告将在单个页面上显示每个人、每个会计期间(月)的所有时间表。但是,我正在努力弄清楚应该如何对结果进行分组。到目前为止,我似乎能做的就是让每一页的每个指定用户出现一行。
我的 T-SQL 看起来像这样:
SELECT tblADSI.DisplayName AS FullName,
ds.[Date of Work],
ds.Hours,
ds.[Description of Work],
ds.Mileage,
ds.Subsistence,
ds.[Activity Code] AS CompanyRef,
c.[Cost Center] AS DiaryClient,
r.Role,
c.Description AS Project,
ds.[Accounting Period],
ds.[Rechargeable Items]
FROM [Diary Sheets] ds
LEFT JOIN Commissions c on c.[Commission Code] = ds.[Commission Code]
LEFT JOIN dbo.Roles r on r.Commission = ds.[Commission Code] and r.EmployeeID = ds.EmployeeID
LEFT JOIN [Accounting Period] ap ON ap.ID = ds.[Accounting Period ID]
LEFT JOIN (SELECT displayName,
EmployeeID FROM OpenQuery (
ADSI,
'SELECT
displayName,
EmployeeID
FROM ''LDAP://example.domaincontroller.com/OU=Unit1,DC=domaincontroller,DC=com''
WHERE objectCategory = ''person''
AND objectClass = ''User''
') AS tblADSI
UNION
SELECT displayName,
EmployeeID
FROM OpenQuery (
ADSI,
'SELECT
displayName,
EmployeeID
FROM ''example.domaincontroller.com/OU=Unit2,DC=domaincontroller,DC=com''
WHERE objectCategory = ''person''
AND objectClass = ''User''
') AS tblADSI
) AS tblADSI
ON tblADSI.EmployeeID = ds.employeeID
WHERE c.[Commission Code] = 'Example Commission'
AND ap.[Accounting Period] = 'Febuary 2015'
ORDER BY FullName, ds.[Date of Work], ds.[Activity Code]
SQL 的示例输出是。
-- Name Date Of Work Hours
John Smith 01/02/2015 9
John Smith 02/02/2015 10
Jane Doe 01/02/2015 5
Jane Doe 02/02/2015 5
Mike Smith 01/02/2015 8
Mike Smith 02/02/2015 9
因此,使用上面的 SQL 作为我的示例,我构建了一个报告,该报告应在特定佣金中每页显示每个用户(基于用户设置的佣金参数)。然而,报告中似乎只显示一行(2 月会计期间的最新条目),仅此而已。例如:
-- Name Date Of Work Hours
John Smith 01/02/2015 9
Jane Doe 01/02/2015 5
Mike Smith 01/02/2015 8
我实际上需要它来显示每个用户在会计期间的所有日记表,所以在报告中,以 John Smith 为例,它会显示为:
-- Name Date Of Work Hours
John Smith 01/02/2015 9
John Smith 02/02/2015 10
对于新页面上的每个其他用户,依此类推。
有人知道我怎样才能做到这一点吗?我研究并尝试了一些 SSRS 分组(我怀疑这是解决方案)但我完全不知所措。无论我尝试什么类型的分组,结果总是一样的。
我已经写 SQL 几年了,但我对 SSRS 比较陌生,而且我的 SSRS 知识完全是自学的,所以我的一些 terminology/formatting 可能不正确。
我设法通过将 SELECT 语句中的所有列添加为我的 tablix 上的父行组来修复它。感谢 mxix 和 NickyvV 的建议,非常感谢。