如何合并的Sql两个SQL查询的结果显示在一个显示

问题描述:

合并我想并排在一个屏幕合并SQL查询结果边如何合并的Sql两个SQL查询的结果显示在一个显示

样品:

Barcode1 Barcode2 
888   33 

这是可能的吗?

非常感谢。

SELECT BARCODE AS BARCODE2 
FROM LG_001_UNITBARCODE, LG_001_ITEMS 
WHERE ITEMREF = LG_001_ITEMS.LOGICALREF 
    AND ITEMREF= 17 AND LINENR = 2; 


SELECT BARCODE AS BARCODE3 
FROM LG_001_UNITBARCODE, LG_001_ITEMS 
WHERE ITEMREF = LG_001_ITEMS.LOGICALREF 
    AND ITEMREF= 17 AND LINENR = 3; 

enter image description here

+0

这是一个很好的开始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/你也应该开始使用ANSI-92风格的连接,他们一直在已经有25年了。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –

+0

每个子查询是否总是只返回1行?如果多行的顺序与他们有关系? '完全外连接并使用row_number()来将窗口函数连接在一起“将是一种方法。 – xQbert

+0

@xQbert:也许'交叉联合'结合两个查询的所有值:V – TriV

一种方法是使用一个子选择如下:

SELECT BARCODE AS BARCODE2 , 
     (
      SELECT BARCODE AS BARCODE3 
      FROM LG_001_UNITBARCODE, LG_001_ITEMS 
      WHERE ITEMREF = LG_001_ITEMS.LOGICALREF 
       AND ITEMREF= 17 AND LINENR = 3 
     ) as BARCODE3 
FROM LG_001_UNITBARCODE, LG_001_ITEMS 
WHERE ITEMREF = LG_001_ITEMS.LOGICALREF 
AND ITEMREF= 17 AND LINENR = 2; 
+0

当子查询返回多于1个结果时,那么你的查询出错了。 – TriV

+0

那么,在目前的情况下,只有一个值返回。 如果还有更多,应该已经指定,以及mrc用户想要处理它的方式(作为逗号分隔值或任何其他方式..) 如果从子查询返回更多的值,您是对,它需要以不同的方式处理:) –

如果我们可以假设,如果多个行存在和不同量的结果为每个表的(一个返回3记录其他5)并且它们应该从每个表的条形码顺序相关...我们可以使用2个公共表表达式和一个row_number()分析。这样,如果存在多行,那么它们都基于分配的行号进行相关,如果一个结果集的行数多于另一行,则会出现空值。

但是,如果它是1-1,这仍然可以工作。

WITH A as (SELECT BARCODE AS BARCODE2, row_number() over (order by barcode) RN 
      FROM LG_001_UNITBARCODE, LG_001_ITEMS 
      WHERE ITEMREF = LG_001_ITEMS.LOGICALREF 
      AND ITEMREF= 17 
      AND LINENR = 2), 
    B as (SELECT BARCODE AS BARCODE3, row_number() over (order by barcode) RN 
      FROM LG_001_UNITBARCODE, LG_001_ITEMS 
      WHERE ITEMREF = LG_001_ITEMS.LOGICALREF 
      AND ITEMREF= 17 
      AND LINENR = 3) 

SELECT A.Barcode2, B.Barcode3 
FROM A 
FULL OUTER JOIN B 
on A.RN = B.RN 
; 

Row_number()RN为我们提供了一种将条形码asc序列中的表关联起来的方法。完整的外连接允许我们处理一个数据集的记录多于另一个的记录。