SSRS给我一个错误,但在数据视图中工作

Gab*_*lVa 2 sql reporting-services

在SSRS 2005中处理查询.查询在数据视图中工作,但在预览中它会爆炸.这就是我所拥有的:

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
Run Code Online (Sandbox Code Playgroud)

我得到的错误是"查询参数'@N'的值表达式是指不存在的报表参数'N'.我的报表参数中有N个设置.请参见下图.

在此输入图像描述

Jon*_*onH 5

你必须将它命名为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>
Run Code Online (Sandbox Code Playgroud)

注意查询参数部分,确保你的项目和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
Run Code Online (Sandbox Code Playgroud)

顺便说一下GROUP BY,如果您使用该条款不正确,则只需列出组中的所有列即可获得预期结果.这可能会让你不知所措.正确的方法是别名查询,然后是别名中的组...:

SELECT 
      n.Blah,
      a.Blah
FROM
      MyTable
INNER JOIN
 (
  SELECT...GROUP BY...
 ) n
Run Code Online (Sandbox Code Playgroud)