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