0

我需要一个变量表达式来调用带有附加参数的子数据集。

我有一个数据集,它返回一份杂货购买清单。就像是:

Milk, NJ, $1.23

Chicken, DE, $5.45

Milk, NY, $1.44

我可以使用购买价格的总和变量来获得价格总和。但是,我需要一个将州税考虑在内的总数。在上面的示例中,假设 NJ 销售税乘数为 1.06,NY 销售税为 1.08。而不是我的牛奶总和是 2.76 (=1.44 + 1.23),我需要它是 2.859 (=1.23*1.06 + 1.44*1.08)。

我有一个SALES_TAX带有查询的子数据集:

SELECT tax_multiplier FROM mydb.sales_tax WHERE state=$P{STATE}

我基本上需要:

Sum($F{PURCHASE_PRICE} * $V{getTax($F{PURCHASE_STATE)})

我怎样才能做到这一点?使用主数据集中的购买状态字段查询 SALES_TAX 子数据集时,我的 getTax 变量需要是什么样子?

4

1 回答 1

2

玛丽安娜,

您可以在查询中建立一个税字段吗?您可以创建一个案例陈述来评估购买的状态。您的查询可能会显示税前价格、税值和税后价格。case 语句看起来像(我使用的是 Oracle,您可能需要针对您的数据库进行调整):

 CASE
 WHEN PURCHASE_STATE = 'NY' THEN 1.08          
 WHEN PURCHASE_STATE = 'NJ' THEN 1.06     
 WHEN PURCHASE_STATE = 'DE' THEN 1.00    
 ELSE 1.05                               /** default value **/
 END AS TAX_RATE

如果您想在 iReport 中执行此操作,我建议您创建一个变量来应用税率。变量表达式将类似于:

 $F{PURCHASE_STATE} == "NY" ? "1.08" : 
   $F{PURCHASE_STATE} == "NJ" ? "1.06" :
     $F{PURCHASE_STATE} == "DE" ? "1.00" : "1.05"

然后,您的 iReport 详细信息带应输出一个带有文本字段表达式
$F{PURCHASE_PRICE} 的文本字段、一个带有文本字段表达式 $V{TAX_RATE} 的文本字段和一个带有文本字段表达式 $F{PURCHASE_PRICE} 的文本字段*$V{TAX_RATE}。

如果您想在 SQL 查询中使用子查询来查找销售税,您可以:

 SELECT P.PURCHASE_ITEM                   AS ITEM, 
      P.PURCHASE_PRICE                    AS PRICE, 
      P.PURCHASE_STATE                    AS STATE, 
      (SELECT T.TAX_RATE 
           FROM TAX_TABLE T 
           WHERE T.STATE = P.PURCHASE_STATE
      )                                   AS TAX_RATE, 
      PURCHASE_OTHER_INFO                 AS OTHER
 FROM PURCHASE_TABLE P
于 2012-07-19T12:57:27.407 回答