私はページングシステムを使用しています。同僚の中には、ディレクトリのようなものを作成する必要がある人もいます。ディレクトリ内の各人には、PAGER_IDとMESSAGING_IDがあります。PAGER_IDは特定のページングデバイスに固有であり、MESSAGING_IDは個人に固有です。グループがシフトで作業し、1つのデバイスをシフトからシフトに渡すと、複数の人が同じPAGER_IDと異なるMESSAGING_IDを持つ場合があります。これは問題なく、設計によるものです。
私たちのディレクトリでは、ユーザーは次の基準が満たされることを望んでいます。
- 各PAGER_IDは1回だけ表示されます(これは、PAGER_IDに対してSELECT TOP 1で実行できることはわかっています)
- 10桁のMESSAGING_IDは、PAGER_IDに10桁のMESSAGING_IDがあり、1つ以上の他のMESSAGING_IDの桁数が異なる場合に推奨されます。
- 10桁のMESSAGING_IDがない場合は、他の桁数のMESSAGING_IDで十分です。
簡潔に言うと、PAGER_ID/MESSAGING_IDのレコードを1つだけ表示したいと考えています。彼らは、すべての個人がディレクトリにリストされているかどうかを気にしません。各PAGER_IDが1つのMESSAGING_IDのみでディレクトリに表示され、10桁のMESSAGING_IDが10桁以外の長さよりも優先される限り、どのMESSAGING_IDを実際に気にする必要はありません。
TOPクエリとIIFクエリの組み合わせを試しましたが、必要な方法ですべてをうまく連携させることができませんでした。
私の基本的な選択クエリは次のとおりです。
SELECT
tbl_Amcom_Prod.NAME,
tbl_Amcom_Prod.PAGER_ID,
tbl_Amcom_Prod.MESSAGING_ID
FROM tbl_Amcom_Prod
WHERE
(((tbl_Amcom_Prod.PAGER_ID) Like "241662"
Or (tbl_Amcom_Prod.PAGER_ID) Like "18888"))
ORDER BY tbl_Amcom_Prod.PAGER_ID;
結果は次のようになります。
| NAME | PAGER_ID | MESSAGING_ID |
--------------------------------------------
| TESTER 1 | 18888 | 18888 |
--------------------------------------------
| SMITH, MARK | 18888 | 5735551262 |
--------------------------------------------
| SUPERVISOR | 241662 | 102621 |
--------------------------------------------
| JOHN, JONES | 241662 | 101436 |
--------------------------------------------
| SEEGER, ROBERT | 241662 | 101409 |
--------------------------------------------
彼らはこれを見たいと思っています:
| NAME | PAGER_ID | MESSAGING_ID |
--------------------------------------------
| SMITH, MARK | 18888 | 5735551262 |
--------------------------------------------
| SUPERVISOR | 241662 | 102621 |
--------------------------------------------
何か案は?