正在 SSRS 2005 中处理查询。该查询在数据 View 中有效,但在预览中却失败了。这就是我所拥有的:
SELECT
TOP(cast(@N as integer))
Date,
StartItem,
MasterItem,
SubItem,
SubItemDescription,
Quantity,
NetQuantity,
UnitOfMeasure,
BomLevel,
Cost,
Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END) AS TotalSumCost
FROM
Bom AS a
GROUP BY
Date, StartItem, MasterItem, SubItem, SubItemDescription, Quantity, NetQuantity, UnitOfMeasure, BomLevel, Cost,
Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END)
ORDER BY TotalSumCost DESC
我得到的错误是“查询参数“@N”的值表达式引用了不存在的报告参数“N”。我的报告参数中有 N 设置。请参见下图。
最佳答案
你必须将其命名为 N,我看到 RowsReturned。
此外,如果您稍后在此过程中定义该参数,则在某些情况下,尤其是在 03 和 05 (Visual Studio) 中,该参数不会被选取。 右键单击您的报告,然后在 XML 查找参数部分中选择“查看代码”,并确保它在那里。它看起来像这样:
<Query>
<DataSourceName>dsTKExpenseReports</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>rptExpenseReportReasons</CommandText>
<QueryParameters>
<QueryParameter Name="@ExpenseReasonID">
<Value>=Parameters!ExpenseReasonID.Value</Value>
</QueryParameter>
<QueryParameter Name="@Reimbursable">
<Value>=Parameters!Reimbursable.Value</Value>
</QueryParameter>
<QueryParameter Name="@RequiresDesc">
<Value>=Parameters!RequiresDesc.Value</Value>
</QueryParameter>
</QueryParameters>
</Query>
注意查询参数部分,确保您的查询参数部分同时具有 Item 和 RowsReturned。 并将参数名称更改为“N”,或者将 SQL 或存储过程更改为值“RowsReturned”。它们应该始终匹配。您的代码应如下所示:
SELECT
TOP(cast(@RowsReturned as integer))
Date,
StartItem,
MasterItem,
SubItem,
SubItemDescription,
Quantity,
NetQuantity,
UnitOfMeasure,
BomLevel,
Cost,
Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END) AS TotalSumCost
FROM
Bom AS a
GROUP BY
Date, StartItem, MasterItem, SubItem, SubItemDescription, Quantity, NetQuantity, UnitOfMeasure, BomLevel, Cost,
Cost * NetQuantity * (CASE WHEN a.Purch = 1 THEN 1 ELSE 0 END)
ORDER BY TotalSumCost DESC
顺便说一句,您不正确地使用了GROUP BY
子句,您只是列出了分组依据中的所有列以获得预期结果。这可能会在路上咬你一口。正确的方法是使用别名查询,然后是别名中的组...:
SELECT
n.Blah,
a.Blah
FROM
MyTable
INNER JOIN
(
SELECT...GROUP BY...
) n
关于sql - SSRS 给我一个错误,但在数据 View 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932096/