0

私は以下の情報を持っており、1 日ごとの出席レポートを生成したいと考えています。概念を説明します。

EMP テーブル ID NAME
1 ハッサン

2 フセイン

3 ハメド

4 クルス

5 フィリップ

取引表

EmpID 時間

1 2010 年 5 月 8 日午前 8:00

2 2010 年 5 月 8 日午前 9:00

3 2010 年 5 月 8 日午前 10:00

私の出席レポートは次のようになります

日付:2010/5/8

ID ネーム ステータス

1 ハッサンプレゼント

2 フセインプレゼント

3 ハメド・プレゼント

4 クルーズ不在

5 フィリップ欠席

私は次のことを試しました、

1.左外部結合、EMP.ID->transcatio.EmpID でリンクを作成

2.取引表から日付でグループ化

  1. ステータスの式を作成すると、次のようになります

If IsNull({transaction.EmpID}) then 'Absent' else 'Present'

ただし、レポートには、その日に取引がある従業員のみが表示されます。レポートはこんな感じです。

ID ネーム ステータス

1 ハッサンプレゼント

2 フセインプレゼント

3 Hammed Present 左外部結合が機能していないようです。

あなたが与えることができる助け/アドバイスを前もって感謝します。

4

3 に答える 3

0

生成された実際の SQL クエリを見ましたか? [データベース] --> [SQL クエリを表示] に移動して表示します。日付によるグループを使用せず、何が表示されるかを確認することも役立つ場合があります。

于 2011-09-06T14:20:40.617 に答える
0

Crystal Report の 2 つのテーブルを left out join で結合したいと同時に、右側のテーブルに基づいてレポートをフィルタリングしたい場合 (ORDER.ORDER_DATE>='1-JAN-2014' など)、結合は等結合に変換されて解決されます。一部の人々が使用を提案する問題 (ISNULL(ORDER.ORDER_DATE) OR ORDER.RDER_DATE>='1-JAN-2014')

上記のソリューションは、顧客の注文が 0 件であり、それらの顧客を引き続き表示したい場合にのみ機能しますが、一部の顧客の注文が 0 件を超えていて、注文日が ON または '31-DEC-2013' より前である場合はどうでしょう。このような状況では、ISNULL(ORDER.ORDER_DATE) は機能しません。このような問題を解決するには、コマンドオブジェクトを追加するか、次のように注文テーブルのビューを作成する必要があります

  1. 次の sql を使用してコマンド オブジェクトを作成します

  2. 2 番目の解決策は、注文のビューを create or replace view view_orderrs as Select * from oders where order.order_dt>='1-JAN-2014' として作成し、注文テーブルの代わりにレポート内のビューを右側のテーブルとして使用することです。

于 2015-02-05T14:53:10.770 に答える
0

同じ情報を使用して、右外部結合を試してみてください。これにより、必要な方向とは反対の方向に実行されたことがわかります。

結合を強制するように設定しましたか? スタック オーバーフロー強制リンク ディスカッション

于 2013-10-04T16:08:14.940 に答える