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。我想不通,因为这两个表之间没有对应的字段,这次我不允许使用 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 回答