Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 参数作为Reporting Service项目中的列名_Sql Server_Visual Studio 2012_Reporting Services - Fatal编程技术网

Sql server 参数作为Reporting Service项目中的列名

Sql server 参数作为Reporting Service项目中的列名,sql-server,visual-studio-2012,reporting-services,Sql Server,Visual Studio 2012,Reporting Services,我在visual studio reporting service项目中将参数作为字段名传递时遇到问题。以下是我的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

我在visual studio reporting service项目中将参数作为字段名传递时遇到问题。以下是我的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 + '%'
选择cast(总和(@Month)作为数字(36,2))
来自v_financials
其中GMOBJ_对象_帐户>0且GMOBJ_对象_帐户<100
及
GMCO_公司,如“%”++@Company++“%”
及
GBLT_分类帐_类型,如“%”++@LedgerType++'%
及
GMR001\账单\项目\代码类似“%”++@BillItemCode++'%
及
MCRP01_除法类似“%”+@除法+'%”
及
GBFY_财政年度,如“%”+@财政年度+“%”

月是给我带来麻烦的部分。我不断得到一个错误,总和不能应用于nvarchar。我不明白为什么会出现此错误,因为当我传递字段名时,它会正常运行,这也是一个字符串。

下面是关于如何编写查询以及如何执行查询的示例


下面是一个关于如何编写查询以及如何执行查询的示例


正如我在评论中所说,您不能直接将变量用作SQL上的列名(在本例中,您不能执行
SUM(@Month)
,除非您要对该变量的值求和)。您可以使用动态SQL或构造一个
大小写
表达式:

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 + '%'
选择cast(SUM)(CASE@Month当“一月”时,然后是一月
当“二月”时,然后是二月……)作为数字(36,2))
来自v_financials
其中GMOBJ_对象_帐户>0且GMOBJ_对象_帐户<100
及
GMCO_公司,如“%”++@Company++“%”
及
GBLT_分类帐_类型,如“%”++@LedgerType++'%
及
GMR001\账单\项目\代码类似“%”++@BillItemCode++'%
及
MCRP01_除法类似“%”+@除法+'%”
及
GBFY_财政年度,如“%”+@财政年度+“%”

我假设
@Month
的值和列名(您需要完成所有值的
大小写)。

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

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 + '%'
选择cast(SUM)(CASE@Month当“一月”时,然后是一月
当“二月”时,然后是二月……)作为数字(36,2))
来自v_financials
其中GMOBJ_对象_帐户>0且GMOBJ_对象_帐户<100
及
GMCO_公司,如“%”++@Company++“%”
及
GBLT_分类帐_类型,如“%”++@LedgerType++'%
及
GMR001\账单\项目\代码类似“%”++@BillItemCode++'%
及
MCRP01_除法类似“%”+@除法+'%”
及
GBFY_财政年度,如“%”+@财政年度+“%”

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

我就是这样解决问题的:查询是针对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;
报告参数为“文本”类型,可用值如下所示:


Wich为我提供了一个很好的组合选择器,如上图所示。

这就是我解决问题的方法:该查询用于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;
报告参数为“文本”类型,可用值如下所示:


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

问题是,除非使用动态SQL,否则不能将变量用作列名。问题是,除非使用动态SQL,否则不能将变量用作列名。非常感谢。我不确定这是否适用于在Visual Studio Reporting Services中创建查询。非常感谢。我不确定这是否适用于在VisualStudioReportingServices中创建查询。工作非常完美!这就是我要找的,非常感谢拉马克!很好用!这就是我要找的,非常感谢拉马克!