查询具有明显的价值

时间:2013-07-02 13:29:56

标签: sql oracle

我有两张表Tabel1Table2。我的表看起来像这样。

表1有三个字段Cust_Number, sales_org and Orders.

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

的字段

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

我能够在MS访问中通过创建一个额外的查询来拉取不同的Numbers,然后在我的最终查询中使用该查询。

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

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Cust_Number,sales_org,在您可以通过左连接

执行此操作的表中都很常见

首先检查Cust_Number的不同计数,表2中的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

答案 2 :(得分: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

答案 3 :(得分: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
......

答案 4 :(得分:0)

Santhosa,据我所知,问题是,在Table2中,您可以拥有多个具有相同客户编号和销售组织(但不同的dist_channels)的行,以便与表的简单连接将乘以即将到来的行数表1之外,这不是你想要的。相反,您希望将Table2简单地用作查找客户编号和销售组织的BU,并且我们假设存在来自cust_number,sale_org - >的功能依赖性。 BU,即对于表2中任何给定的cust_number,sale_org对,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对返回多行。

相关问题