在Telerik报表设计器中,如何使用组标题创建多列表?

时间:2017-04-28 19:33:17

标签: sql datatable telerik crosstab telerik-reporting

我使用的是Telerik Report Designer(独立应用程序,而不是Visual Studio中的应用程序)。我有一个包含两个字段的数据集:group和task。我想制作一个表格,其中每个组都在其自己的列中,下面列出了该组的任务。我提出的最好的是交叉表报告,显示了组和任务及其计数,但这不是客户想要的。如何在报表设计器中获得我想要的结果?如果Telerik控件不能这样做,我怎么能重写我的SQL查询来输出数据是我想要的格式所以我可以直接使用SQL输出来填充表格?

这是我的数据集: enter image description here

我用来获取该数据集的查询是:

SELECT 
  tblDtl.Group
, tblDtl.Task
FROM tblHdr
INNER JOIN tblDtl ON tblHdr.CLHId = tblDtl.CLHId
INNER JOIN tblType ON tblHdr.CLHId = tblType.SelectedId
INNER JOIN tblOrder ON tblType.TypeId = tblOrder.Type
ORDER BY tblDtl.CLDDisplayOrder

这是我想要的输出: enter image description here

我得到的最好的是交叉表,如下所示: enter image description here

2 个答案:

答案 0 :(得分:0)

*部分答案*

我无法弄清楚如何获得我想要的2列,但我使用下面的代码至少得到第一行中的标题及其下方的详细信息。我将此代码放在存储过程中,然后将该存储过程用作Telerik报告中的表的数据源。



yeswb[]




答案 1 :(得分:0)

这可以使用PIVOT实现,像这样。

IF ( OBJECT_ID('tempdb..#tmpDB') IS NOT NULL )
    BEGIN
        DROP TABLE  #tmpDB
    END


SELECT  testing ,
        production
INTO    #tmpDB
FROM    ( 


            SELECT 
              tblDtl.GROUP [group]
            , tblDtl.Task [task]
            FROM tblHdr
            INNER JOIN tblDtl ON tblHdr.CLHId = tblDtl.CLHId
            INNER JOIN tblType ON tblHdr.CLHId = tblType.SelectedId
            INNER JOIN tblOrder ON tblType.TypeId = tblOrder.Type
            ORDER BY tblDtl.CLDDisplayOrder




        ) P PIVOT ( MAX(task) FOR [group] IN ( testing, production ) ) PVT;
WITH    CTEtesting
          AS ( SELECT   ROW_NUMBER() OVER ( ORDER BY testing ) ctr ,
                        testing
               FROM     #tmpDB
               WHERE    production IS NULL
             ),
        CTEProduction
          AS ( SELECT   ROW_NUMBER() OVER ( ORDER BY production ) ctr ,
                        production
               FROM     #tmpDB
               WHERE    testing IS NULL
             ),
        CTE
          AS ( SELECT   testing ,
                        production
               FROM     CTEProduction P
                        FULL JOIN CTEtesting T ON T.ctr = P.ctr
             )
    SELECT  *
    FROM    CTE

结果:

testing              production
-------------------- --------------------
Add object           Prompt for input
Report object        Show error log
Show error log       Show report
Vaidate object       Validate input
Validate report      Validate object
Vanipulate object    NULL

(6 row(s) affected)