2

2 つのテーブルがあります: HIRES1and HIRES2(リスト間で名前が重複しています)。

HIRES2 acttdt Hires1 acttdt Hires2`HIRES1のときに行を削除しようとしています。PERSONALID is also inas long as the action date () inis before the action start date () in

注: 一部の日付が日付の前にあり、一部の日付が日付の後にあるHIRES1行が複数ある場合があります(日付の後であればそれらを保持したい)。personalidhires2hires2hires2

hires1.actstdt以下に記述したコードは、およびのパラメーター値を入力するように求めますhires2.actstdt

DELETE * 
FROM HIRES1 
  WHERE PERSONALID in 
  (
    SELECT DISTINCT PERSONALID 
    FROM HIRES2
  ) AND HIRES1.ACTSTDT < HIRES2.actstdt;
4

2 に答える 2

1

DCountを使用して、 の各行HIRES2と同じPERSONALIDおよび後の行の数を取得します。最終的には、そのカウントが 0 を超える行を取得しますが、最初にクエリを使用してロジックを解決します。正しいターゲット行を返すことができたら、それを.ACTSTDTHIRES1DELETEHIRES1SELECTDELETE

要件を正しく理解していれば、これは合理的な出発点になるはずです...

SELECT *
FROM HIRES1
WHERE
    DCount
        (
            '*',
            'HIRES2',
            'PERSONALID=' & PERSONALID
                & ' AND actstdt>' & Format(ACTSTDT, '\#yyyy-m-d\#')
        ) > 0;

の数値データ型を想定しましPERSONALIDた。実際にテキストの場合は、そのDCount式の値を引用符で囲む必要があります。

于 2013-10-31T21:39:58.723 に答える