我有一个存储过程,它根据参数@SearchType返回列数。所以首先它检查什么是参数值,然后SELECT语句返回数据。
我的问题是如何在SSRS中使用此程序?它没有给我带来任何列,所以我可以将它添加到表或矩阵中。
在SSMS中,程序运行正常。 必须有一个解决方法。
由于
ALTER PROCEDURE dbo.RPT_spLoadUserOpenTasks
(
@UserGUID varchar(8000) = NULL,
@NoteStoreType INT = NULL,
@DateFrom datetime = NULL,
@DateTo datetime =NULL,
@LineGUID varchar(8000) = NULL
)
AS
IF @SearchType = 0
BEGIN
SELECT DISTINCT
TOP 100 PERCENT
Column1,
Column2,
Column3
--other columns
FROM
dbo.tblNoteEntities (nolock)
--some other JOINs here
WHERE tq.LineGuid IN (SELECT * FROM @LineTable)
AND
(@UserGUID IS NULL OR tblNoteRecipients.UserGUID = @UserGUID)
ORDER BY Column1
RETURN
END
--------------------------------------------------------------------------------
if @SearchType = 1 --eq and eq access
BEGIN
SELECT DISTINCT
TOP 100 PERCENT
Column4,
Column5,
Column6
FROM
dbo.tblNoteEntities (nolock)
--some other JOINs here
WHERE tq.LineGuid IN (SELECT * FROM @LineTable)
AND
(@UserGUID IS NULL OR tblNoteRecipients.UserGUID = @UserGUID)
ORDER BY Column1
RETURN
END
--------------------------------------------------------------------------------
if @SearchType = 3 --And so on
答案 0 :(得分:1)
您必须在数据集中手动定义查询输出的列。
由于列名和数字不是静态的,请尝试通过让每个查询返回相同数量的列,这些列具有不需要的列的空数据。
对于参数的每个值,创建包含所需列的表并根据参数的选定值设置表可见性(例如,如果参数有3个值,则必须创建3个表,但每次只能看到一个表)。