如何合并的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;
一种方法是使用一个子选择如下:
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;
当子查询返回多于1个结果时,那么你的查询出错了。 – TriV
那么,在目前的情况下,只有一个值返回。 如果还有更多,应该已经指定,以及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序列中的表关联起来的方法。完整的外连接允许我们处理一个数据集的记录多于另一个的记录。
这是一个很好的开始。 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 –
每个子查询是否总是只返回1行?如果多行的顺序与他们有关系? '完全外连接并使用row_number()来将窗口函数连接在一起“将是一种方法。 – xQbert
@xQbert:也许'交叉联合'结合两个查询的所有值:V – TriV