我如何加入我的两张桌子?

时间:2016-06-28 15:53:32

标签: sql oracle join union

我有两个表,我正在尝试连接或联合以从第二个表中引入一个列。

SELECT Services,Metric_Type,services_be,Services_Be_L2,Services_Be
FROM table1
JOIN table2
ON table1.SERVICES_BE = table2.SERVICES_BE

Metric_Typetable2

所需的全部内容

潜在加入

表1

Services_Be,
SALES_NODE_LEVEL1,
Fiscal QT,
Fiscal YR,

表2

Services_Be,
Sales_L1 = SALES_NODE_LEVEL1,
Fiscal QT,
Fiscal YR

2 个答案:

答案 0 :(得分:0)

SELECT Services,Metric_Type,services_be,Services_Be_L2,Services_Be
FROM table1
JOIN table2
ON table1.SERVICES_BE = table2.SERVICES_BE

看起来像一个有效的连接,这将允许您并排使用两个表中的列。您可能想要使用的一件事是表别名,以便更容易引用表,然后在选择列表中明确地标识列的表格:

SELECT t1.Services,t1.Metric_Type,t1.services_be,t2.Services_Be_L2,t2.Services_Be
    FROM table1 t1
    JOIN table2 t2
    ON t1.SERVICES_BE = t2.SERVICES_BE

如果您想APPEND从一张桌子到另一张桌子的记录,您需要使用UNIONUNION ALL

SELECT 
    Services_Be,
    SALES_NODE_LEVEL1,
    Fiscal QT,
    Fiscal YR
FROM
    Table11

UNION ALL

SELECT 
    Services_Be,
    SALES_NODE_LEVEL1,
    Fiscal QT,
    Fiscal YR
FROM
    Table12

附加时,顶部表和底部之间的列定义和数据类型必须相同。 UNION ALL会追加Table2的所有记录,而UNION只追加Table1中尚未出现的记录(类似于DISTINCT的排序)。

答案 1 :(得分:0)

我猜这是一个含糊不清的列错误。 在select语句中,列出属于两个表的字段SERVICES_BE,并且sql解析器不知道您的意思是哪个表。 尝试使用表别名。

    SELECT t1.Services,t2.Metric_Type,t1.services_be,t1.Services_Be_L2,t1.Services_Be
    FROM table1 t1 
Inner JOIN table2 t2 ON t1.SERVICES_BE = t2.SERVICES_BE