1

我有两张桌子Tabel1Table2. 我的桌子看起来像这样。

Table1 有三个字段Cust_Number, sales_org and Orders.

表 2 按名称包含字段Cust_Number, sales_org, BU and Dist_Channel.

table1 中缺少 Dist_Channel,因此我必须从 TABLE 2 中获取 Cust_Number 和 sales_org 的 Distinct,然后与 table1 进行连接以获得相应的 BU。

通过创建一个额外的查询来提取不同的数字,然后在我的最终查询中使用该查询,我能够在 MS 访问中做到这一点。

有人可以对此提出一些建议吗?

4

5 回答 5

0

试试这个简单的版本:

SELECT t1.cust_number, t1.sales_org, t2.BU
FROM Tabel1 t1
INNER JOIN Table2 t2 ON t1.cust_number= t2.cust_number AND t1.sales_org = t2.sales_org
于 2013-07-02T13:35:37.327 回答
0
SELECT t1.cust_number, t2.bu, t2.dist_channel
FROM table1 t1, table2 t2
WHERE t1.cust_number = t2.cust_number
AND t1.sale_org = t2.sales_org
AND -- your actual criteria go here
于 2013-07-02T13:33:08.123 回答
0

Cust_Number, sales_org, 在这两个表中都很常见你可以通过左连接来做到这一点

还首先检查表 2 中 Cust_Number 和 sales_org 的不同计数是否相同

SELECT Tabel1.Cust_Number, Tabel1.sales_org, Table2.BU FROM Tabel1 left JOIN Table2  ON Tabel1.Cust_Number = Table2.Cust_Number AND Tabel1.sales_org = Table2.sales_org
于 2013-07-02T13:33:17.867 回答
0

你可以这样做: -

SELECT tbl1.cust_number, tbl1.sales_org tbl2.bu, tbl2.dist_channel
FROM Table1 as tbl1, Table2 as tbl2
WHERE tbl1.cust_number = tbl2.cust_number
AND tbl1.sale_org = tbl2.sales_org
......
于 2013-07-02T13:37:09.583 回答
0

Santhosa,据我了解,问题在于,在 Table2 中,您可以有多行具有相同的客户编号和销售组织(但不同的 dist_channels),这样对表的简单连接将乘以来自 Table1 的行数,这不是你想要的。相反,您只想将 Table2 用作查找客户编号和销售组织的 BU,并且我们假设存在来自 cust_number,sale_org --> BU 的功能依赖关系,即对于任何给定的 cust_number,sale_org表 2 中的对,BU 始终相同。

如果该假设成立,那么您可以执行以下操作:

SELECT tb1.cust_number, tb1.sales_org, tb2.bu
  FROM Table1 AS tb1
  JOIN (
    SELECT DISTINCT cust_number, sales_org, bu
      FROM Table2) AS tb2
    ON tb1.cust_number = tb2.cust_number
   AND tb1.sales_org = tb2.sales_org

但请记住,如果给定 cust_number、sales_org 对有多个 BU,那么这仍会导致 Table1 中给定 cust_number、sales_org 对返回多行。

于 2013-07-02T14:01:01.933 回答