如何合并行和列?

时间:2018-08-15 04:58:00

标签: sql join union

我有两个桌子。我需要合并两个表。

这第一张桌子。

   ----------------------------
   | row_no | Part No |Qty_A   |
   ----------------------------
   | 1      |    A    | 100    |
   | 2      |    A    | 300    |
   ----------------------------

第二张桌子。

   ----------------------------
   | row_no | Part No |Qty_B   |
   ----------------------------
   | 1      |    A    | 400    |
   | 2      |    B    | 200    |
   ----------------------------

这是我的结果:

   --------------------------------------
   | row_no | Part No |  Qty_A |  Qty_B   |
   --------------------------------------
   | 1      |    A    | 100    |   400    |
   | 2      |    A    | 300    |    -     |
   | 2      |    B    |   -    |   200    |
   --------------------------------------

两个表由“ row_no” “ Part_no” 列连接。 我尝试使用“ LEFT OUTER JOIN”,但结果不符合预期。

SELECT t1.row_no ,t1.part_no ,t1.Qty_A ,t2.Qty_B
FROM
(SELECT 1 as row_no,'A' as part_no,100 as Qty_A) as t1
 LEFT OUTER  JOIN 
(SELECT 1 as row_no, 'B' as part_no,200 as Qty_B) as t2
   ON t1.row_no = t2.row_no and t1.part_no = t2.part_no  

对不起,我不清楚的例子。

更新 这是来自大型交易的示例。 enter image description here

我需要按Part_no进行分组,并按这样的行号进行重新排列。

enter image description here

2 个答案:

答案 0 :(得分:3)

请尝试在以下查询中加入全部工会:

Undefined variable: courselist

或者您可以尝试使用完全外部联接:

select row_no ,part_no ,Qty_A , '-' as Qty_B from tableA
union all
select row_no ,part_no ,'-' as Qty_A , Qty_B from tableb

答案 1 :(得分:2)

UNION运算符用于合并两个或多个SELECT语句的结果集。  -UNION中的每个SELECT语句必须具有相同数量的    列  -这些列还必须具有相似的数据类型  -每个SELECT语句中的列也必须具有相同的顺序 union语句中的第一个查询定义列名称。 因此,您可以

select row_no ,part_no ,Qty_A , null as Qty_B  from table1
union all
select row_no ,part_no , null, Qty_B from table2