簡體   English   中英

SSRS錯誤添加共享數據集

[英]SSRS error adding shared dataset

當我將以下代碼添加到報表存儲過程中時,無法將共享數據集添加到我的SSRS報表中,這給了我這個錯誤:

在此處輸入圖片說明

關鍵字“ as”附近的語法不正確。

我添加的代碼(以前的工作過程中)是:

set @sqlstring = Concat(N'INSERT INTO #TEXT_SEARCH_RESULT',
        N'(Result_Name,Count_of_tickets,HT,Created_Group)',
        N' SELECT ',@TimeDefinition,' as RESULT_NAME',
        N' ,sum(COUNT_OF_TICKETS) as COUNT_OF_TICKETS',
        N' ,sum(HT) as HT',
        N' ,''Group'' as CREATED_GROUP',
        N' from #TEXT_SEARCH_MAIN ct',
        N' where (1=1) ')
--other items that append to the string, but have no bearing on the question
set @sqlstring=concat(@sqlstring,N' group by ',@TimeDefinition)

sql語句將數據附加到臨時表中,該表中包含上一條語句中已有的數據。
@TimeDefinition聲明為NVARCHAR(100)
將@TimeDefinition替換為變量中的文本(例如cast(CREATEDDATE as date ),可以添加報告
如果我從串聯字符串中刪除了AS ,則該錯誤僅更改為關鍵字'by'附近的Incorrect語法
在SSMS中運行查詢不會給出錯誤

這里的問題是,在沒有提供參數的情況下,SSRS無法確定查詢的列。 使用動態SQL時,如果一個(或多個)參數沒有提供值,則有時動態SQL將沒有值。 因此無法確定列值。 舉一個簡單的例子:

DECLARE @SQL nvarchar(MAX);

SET @SQL = N'SELECT ' + QUOTENAME(@Col1) + N' AS Result1,' + NCHAR(10) + 
           N'       ' + QUOTENAME(@Col2) + N' AS Result2' + NCHAR(10) + 
           N'FROM MyTable;';
PRINT @SQL;
EXEC sp_executesql @SQL;

除非提供@Col1@Col2的值, @SQL的值將導致NULL

因此,在使用此類查詢時,SSRS將為您提供一個對話窗口。 如下所示(取自SSDT 2017) 在此處輸入圖片說明

您需要在此對話框中輸入一些值(在第二列中,名為Parameter Value ),以便SSRS可以正確確定列定義。 完成此操作后,SSRS將正確創建數據集。

在相關說明中,我建議不要使用1=1 這只會增加處理時間(因為數據引擎仍需要檢查1=1 ),並且可能導致查詢分析器做出錯誤的選擇。 實際上,將類似的內容放入查詢的WHERE子句中可能被認為是非常糟糕的做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM