0

ビジュアル スタジオ レポート サービス プロジェクトでパラメーターをフィールド名として渡すのに問題があります。これが私の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 は、私に問題を引き起こしている部分です。nvarchar に SUM を適用できないというエラーが表示され続けます。フィールド名を渡すと正しく実行されるため、このエラーが発生する理由がわかりません。これも文字列です。

4

3 に答える 3

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

于 2013-05-24T13:57:32.487 に答える