有没有办法可以将计算出的表达式用作SSRS中的参数?

时间:2018-08-21 20:03:32

标签: sql-server sql-server-2008 reporting-services ssrs-2008 ssrs-2008-r2

我无法像使用两个未计算的参数那样将参数写入数据集中。如果我以错误的方式进行操作,不胜感激,请给予任何帮助以使我走上正确的轨道。

数据集查询

SELECT 
    Inmast.fpartno
    , inmast.fdescript
    , inmast.fonhand
    , inmast.fnonnetqty
    , inmast.fcstscode
    , inmast.fsource
    , inmast.fprodcl
    , inprod.fpc_desc
    , inmast.fsafety
    , inmast.fbook
    , inmast.fonorder
    , inmast.fproqty
    , inmast.freordqty  
From inmast  
    inner join inprod 
        on inmast.fac + inmast.fprodcl = inprod.fac + inprod.fpc_number  
Where inmast.fcstscode = @Code and inmast.fsource = @Source 

计算表达式

(inmast.fonhand 
    + inmast.fonorder 
    + inmast.fproqty 
    - inmast.fbook 
    - inmast.fnonnetqty 
    - inmast.fsafety < 0
) = @CalculatedExpression

1 个答案:

答案 0 :(得分:0)

您不能使用数据集中的值来创建参数值。该参数用于创建数据集,因此该值对于该参数将不可用。

我相信这会完成您想要做的事情。首先,您的新查询是:

SELECT 
Inmast.fpartno
, inmast.fdescript
, inmast.fonhand
, inmast.fnonnetqty
, inmast.fcstscode
, inmast.fsource
, inmast.fprodcl
, inprod.fpc_desc
, inmast.fsafety
, inmast.fbook
, inmast.fonorder
, inmast.fproqty
, inmast.freordqty
From inmast  
inner join inprod 
    on inmast.fac + inmast.fprodcl = inprod.fac + inprod.fpc_number  
Where inmast.fcstscode = @Code and inmast.fsource = @Source
and  CASE WHEN 
(inmast.fonhand 
+ inmast.fonorder 
+ inmast.fproqty 
- inmast.fbook 
- inmast.fnonnetqty 
- inmast.fsafety
) < 0 THEN 0 ELSE 1 END = @CalculatedValue 

接下来,对于名为@CalculatedValue的新参数,您将创建两个默认值。

  
      
  1. 标签“小于0”,值0
  2.   
  3. 标签“大于0”和值为1
  4.   

发生的情况是,如果计算的总和小于0,case语句将返回0。如果计算的总和小于0,它将返回1。您的@CalculatedValue将与该值匹配以适当地过滤结果。