4

行が属する特定のカテゴリの出現回数を数えようとしました (行が属する特定のカテゴリの出現回数を数える SQLを参照してください) 。

しかし今、私はSQLのことをしなくても、jasperレポートがこれらすべてを実行できるのだろうかと思っています. データベースサーバーに余分な作業を与えずに、独自に集計を行う (実際に何が起こっているのか)?

たとえば、これは私が持っているレポートです。

name | color | flavor
--------------------------
n1   | green | lemon
n2   | blue  | strawberry
n3   | red   | lemon
n4   | green | lemon
n5   | green | mango
n6   | red   | chocolate
n7   | white | lemon
n8   | blue  | mango
n9   | green | chocolate

そして、これは私が得たい要約です:

colors | occurrences         flavor    | occurences
--------------------         ----------------------
green  |   4                 lemon     |   4
blue   |   2                 strawberry|   1
red    |   6                 mango     |   2
white  |   1                 chocolate |   2
4

1 に答える 1

2

3 つのオプションがあります。

  1. 2 つのサブレポートを用意し、それぞれの順序で色と味で選択します。そして、各サブレポートの要約では、マスター要約の一部としてそれらを持っています. SQLデータが注文されたら、iReportでその列ごとにグループを作成し、変数で各グループをカウントできます。欠点は、サブレポートごとに DB に 2 回アクセスすることです。

  2. データ ソースの独自の Java 実装があります。これは、データ変換を行わないデータ プロキシのようなものです。色とフレーバーの発生をカウントする HashMap のみがあります。次に、レポート評価「レポート」を含む追加フィールドとして、このフィールドをデータ ソースから取得し、レポートに表示します。一度だけ DB にアクセスします。

  3. print if 式と定義されたグループ (color,flavor) と print if 式の組み合わせは、 union ALL select ステートメントと一緒に役立つ可能性が

    あります。 'print_to_group1_summary' を print_if_field として、色を dummy_field として、色で並べ替え、 union allを選択 a,b,c を選択 a,b,c



たぶん、これは概念的なアイデアとして役立ちます。

于 2012-11-26T10:28:38.707 に答える