参数作为Reporting Service Project中的列名称

时间:2013-05-24 13:45:54

标签: sql-server visual-studio-2012 reporting-services

我在Visual Studio报表服务项目中将参数作为字段名称传递时遇到问题。这是我的SQL语句:

SELECT cast(SUM(@Month) as numeric(36,2))
FROM v_financials
WHERE GMOBJ_Object_Account > 0 AND GMOBJ_Object_Account < 100
AND
GMCO_Company LIKE '%' + @Company + '%'
AND
GBLT_Ledger_Type LIKE '%' + @LedgerType + '%'
AND
GMR001_Bill_Item_Code LIKE '%' + @BillItemCode + '%' 
AND
MCRP01_Division LIKE '%' + @Division + '%'
AND
GBFY_Fiscal_Year LIKE '%' + @FiscalYear + '%'

@Month是给我带来麻烦的部分。我一直收到SUM无法应用于nvarchar的错误。我不明白为什么我会收到此错误,因为当我传递字段名称时它正常运行,这也是一个字符串。

3 个答案:

答案 0 :(得分:4)

正如我在评论中所说,你不能直接在SQL上使用变量作为列名(在这种情况下,你不能做SUM(@Month),除非你想要对该变量的值求和) 。您可以使用动态SQL或构造CASE表达式:

SELECT cast(SUM(CASE @Month WHEN 'January' THEN January
                WHEN 'February' THEN February.....) as numeric(36,2))
FROM v_financials
WHERE GMOBJ_Object_Account > 0 AND GMOBJ_Object_Account < 100
AND
GMCO_Company LIKE '%' + @Company + '%'
AND
GBLT_Ledger_Type LIKE '%' + @LedgerType + '%'
AND
GMR001_Bill_Item_Code LIKE '%' + @BillItemCode + '%' 
AND
MCRP01_Division LIKE '%' + @Division + '%'
AND
GBFY_Fiscal_Year LIKE '%' + @FiscalYear + '%'

我假设@Month的值和列名称(您需要为所有值完成CASE。)

答案 1 :(得分:0)

以下是您需要如何编写查询以及如何执行查询的示例

Specifying Column Name As A Parameter in SELECT statement?

答案 2 :(得分:0)

这就是我解决问题的方法:查询是针对INFORMIX数据库的:

SELECT * FROM vs_mant_expendedoras_01 
WHERE 
(CASE ? WHEN 'cardman' THEN cardman WHEN 'display' THEN display WHEN 'unit' THEN unit END)  = ?
AND fecha BETWEEN ? AND ?
ORDER BY date;

报告参数是&#39; text&#39;有类似的可用值的类型:

enter image description here 如上图所示,Wich给了我一个很好的组合选择器。