SSRS - 基于varchar列对每页多行进行分组

时间:2015-03-19 18:36:26

标签: sql-server reporting-services ssrs-grouping sql-server-data-tools

我正在尝试创建一份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知识完全是自学的,所以我的一些术语/格式可能不正确。

1 个答案:

答案 0 :(得分:0)

我设法通过在我的Tablix上添加SELECT语句中的所有列作为父行组来修复它。感谢mxix和NickyvV的建议,非常感谢。