0

関連のないテーブルに対するデータベース クエリについて質問があります。
今回はVBAを使わないことが求められており(上司からの要求)、大変です。

私のクエリは 5 列のデータを返す必要があります。最初の 4 列は、前のクエリの出力から直接取得されるため、簡単です。

Query Q_STOP_LOSS: 

Year  Contr_Pool_ID          Contr_Ins_ID      COUNTRY   Employees    STOP_LOSS
2010  Crédit Agricole CIB    QUATREM           2         6024
2010  Crédit Agricole CIB    QUATREM           2         6024
2010  Amada CO LTD           MALAKOFF MEDERIC  4         1320
2010  Amada CO LTD           MALAKOFF MEDERIC  4         1320
2010  Amada CO LTD           MALAKOFF MEDERIC  4         1320

「STOP_LOSS」と呼ばれる最後の列が問題です。そこに入力された値は、WHERE 句に基づいて無関係なテーブルから取得する必要があるためです。等しいフィールドを含まない別のテーブルからの SL 値が含まれている必要があります。テーブルは T_STOP_LOSS と呼ばれ、間隔をリストします。

Table: T_STOP_LOSS

ID   LIVES_FROM LIVES_TO  NR_COUNTRIES_FROM  NR_COUNTRIES_TO  SL_VALUE
1    0          999       2                  2                39,3
12   0          999       3                  3                34,6
23   0          999       4                  4                29,6
34   0          999       5                  9                25,7
45   0          999       10                 100              22,17
46   1000       1499      2                  2                31,1
2    1000       1499      3                  3                27,4
13   1000       1499      4                  4                23,3
24   1000       1499      5                  9                20,4
35   1000       1499      10                 100              17,5

"Country" と "Employees" (列 3 と 4、前のクエリの結果) の値がそれぞれ "LIVES_FROM/LIVES_TO" と "NR_COUNTRIES_FROM/NR_COUNTRIES_TO" の間にある場合、何を返す必要がありますか?対応する SL_Value。2 つのテーブル間に対応するフィールドがなく、今回は VBA の使用が許可されていないため、わかりません。さらに難しくするために、「LIVES_FROM/LIVES_TO」と「NR_COUNTRIES_FROM/NR_COUNTRIES_TO」には、関連するテーブルの ID が含まれています。
VBAを使用せずにこの列をクエリに追加する方法はありますか? クエリ ツールと SQL ビューを使用しようとしましたが、

質問が明確でない場合はお知らせください。

4

1 に答える 1

2

どうですか:

SELECT (SELECT TOP 1 sl_value
        FROM   t_stop_loss t
        WHERE  q.country BETWEEN nr_countries_from AND nr_countries_to
               AND q.employees BETWEEN lives_from AND lives_to) AS stop_loss,
       q.year,
       q.contr_pool_id,
       q.contr_ins_id,
       q.country,
       q.employees
FROM   q_stop_loss q 
于 2012-07-18T15:57:31.853 に答える