2009-06-23 6 views
0

私はこのようなデータを、行うにはジャスパーレポートを持っている:ジャスパー報告書:2つの詳細セクション?

Item | Quantity | Color 
------+-----------+-------- 
A001 | 1   | Red 
A001 | 1   | Green 
B002 | 3   | Red 
B002 | 3   | Purple 

レポートは項目/数量によってグループ化され、例えば

Item: A001, Qty: 1, Colors: Red,Green 
Item: B002, Qty: 3, Colors: Red,Purple 

は今、私のような、すでにグループこのジャスパーレポートを持っている - すなわち、下に色のリストで、項目と数量との見出しを示しています。

このグループの下では、項目の数に等しい数の水平線(何かを書き込むための)を表示する必要があります。例えばA001グループの下に私は1つの行を表示する必要がある、とB002のグループの下に私はそうのように、3行を表示する必要があります:私は碧玉のスクリプトを見てみました

Item A001, Qty 1, Colors Red, Green 
      _________________________ 

Item B002, Qty 3, Colors Red, Purple 
      _________________________ 
      _________________________ 
      _________________________ 

が、彼らが唯一のレポートを操作することができそうですパラメータ/変数。

私はこれをどのように行うことができるのでしょうか?

答えて

0

OK、これは最後に、詳細フッターセクションのサブデータセットとクロスタブを使用して行われました。うまく動作します - 貢献したすべての人に感謝:)

0

うーん、興味深い。ここで

はあなたが何ができるかです:このソースのデータを使用して

(MySQLの):

create table items ( 
item varchar(4), 
quantity number, 
color varchar(10), 
); 

(挿入データ...)

create table numbers (i integer) 

(データ0、1を挿入、2 .... MySQL 5.1には手続きが保存されていました。以前のバージョンでは、それを設定するための外部スクリプトが必要でした。

次に、正しい種類のクエリを作成することです。私はこれを思いついた。

select i.*, n.i from 
(
select concat(i.item, ' ', i.quantity) as grouping, i.item, i.quantity,group_concat(distinct color) as colors 
from items i 
GROUP BY item, quantity 
) i 
cross join numbers n 
where quantity > n.i; 

たとえば、私は私の番号表を移入し、あなたの例のデータを項目表を移入した後、私が手クエリを実行した場合:あなたのジャスパーレポートに続いて

+----------+------+----------+------------+------+ 
| grouping | item | quantity | colors  | i | 
+----------+------+----------+------------+------+ 
| A001 1 | A001 |  1 | Red,Greem | 0 | 
| B002 3 | B002 |  3 | Red,Purple | 0 | 
| A001 1 | A001 |  1 | Red,Greem | 1 | 
| B002 3 | B002 |  3 | Red,Purple | 1 | 
| A001 1 | A001 |  1 | Red,Greem | 2 | 
| B002 3 | B002 |  3 | Red,Purple | 2 | 
| A001 1 | A001 |  1 | Red,Greem | 3 | 
| B002 3 | B002 |  3 | Red,Purple | 3 | 
+----------+------+----------+------------+------+ 

を、トリックは働くグループ/バンドを作成することです「グループ化」カラムから、その中にあなたの見出しを置く:

Item A001, Qty 1, Colors Red, Green 

をそして、詳細セクションにだけ詳細に唯一のものとしてラインを持っています。

これを行うと、私に必要なレポートが生成されます。

numbersテーブルはちょっとばかりですが、標準的なデータウェアハウス手法ですが、一部のデータベース(Oracleなど)で巧妙な再帰的プロシージャや必要性を排除するその他の機能があると思われます。

関連する問題