3

実際に Crystal Reports v12 (2008) レポートを作成していますが、Crystal を使用して以下を抽出する方法が見つかりません。誰かが SQL 言語で答えてくれたら、それをつなぎ合わせることができると思いました。

2 テーブル: hbmast、ddmast

SELECT hbmast.custno, hbmast.id, ddmast.name, ddmast.status
WHERE hbmast.custno = ddmast.custno
GROUP BY hbmast.id
pseudo code::show all hbmast values that have ddmast.status = '2'

出力例:

J0001, 111222, PAUL JONES, 1
       111222, PAUL JONES, 2
       111222, PAUL JONES, 1

K0001, 555333, PETER KING, 3
       555333, PETER KING, 1

すべての子レコードを含むレポートに Paul を表示させたいのですが、ddmast.status フィールドが「2」の子レコードがないため、Peter をレポートに表示しないでください。

助けてくれてありがとう

4

3 に答える 3

4

私はあなたがこれを探していると思います:

select hb.custno, hb.id, dd.name, dd.status from hbmast hb
join ddmast dd on hb.custno = dd.custno
where hb.custno in (
    select custno from ddmast
    where status = '2'
)

これで期待どおりの結果が得られるかどうかをお知らせください。

于 2012-04-20T22:06:35.197 に答える
2

Crystalでこれを実現する方法は、hbテーブルとddテーブルを用意してから、ddテーブルの2番目のエイリアスを作成することです。

したがって、status = 2のddエイリアステーブルをフィルタリングしてから、hbテーブルに結合し、(エイリアスではなく)ddテーブルに戻ります。SQLは次のようになります。

select hb.custno, hb.id, dd.name, dd.status from hbmast hb
inner join ddmast dd on hb.custno = dd.custno
inner join ddmast dd2 on hb.custno = dd2.custno
where dd2.status = '2'

Andomarは、ステータスが2のグループごとに複数のレコードがある場合に表示される重複レコードについて有効なポイントを示します。その場合は、主キーでグループ化してグループフッターレベルで行情報を表示するか、次のSQL式を使用できます。二重結合メソッドの代わりに、選択式のサブクエリ。

SQL式:(select count(*) from ddmast where custno = "hbmast.custno" and status = '2')

次に、選択の専門家を記録します。{%sqlexpression} > 0

于 2012-04-20T22:16:24.253 に答える
1

そして、同じものを得る別の方法...

SELECT hb.custno, hb.id, dd.name, dd.status 
FROM hbmast hb
INNER join ddmast dd 
  on hb.custno = dd.custno
INNER JOIN DDMAST2 DD2 
  on DD2.custNo = HB.custNo 
  AND DD2.Status='2'
于 2012-04-20T22:14:57.303 に答える