簡體   English   中英

SQL Server完全連接,無需訂購

[英]SQL Server full join without ordering

我得到了兩個包含相同字段(ITEM,名稱)的sql表(ITEM_A,ITEM_B)。

ITEMA_A

001 LaptopA1
001 LaptopA2
001 LaptopA3
002 DesktopA1
002 DesktopA2
003 MouseA1
003 MouseA2

ITEM_B

001 LaptopB1
001 LaptopB2
002 DesktopB1
002 DesktopB2
002 DesktopB3
002 DesktopB4
003 MouseB1
003 MouseB2
003 MouseB3

這是我所做的查詢:

SELECT ITEM,Designation1, ROW_NUMBER() OVER (PARTITION BY ITEM ORDER BY Designation1) 'row'
INTO #ITM_A
FROM ITM_A




SELECT ITEM,Designation2, ROW_NUMBER() OVER (PARTITION BY ITEM ORDER BY Designation2) 'row'
INTO #ITM_B
FROM ITM_B;


SELECT A.ITEM,A.Designation1,B.ITEM,B.Designation2 
FROM #ITM_A A
FULL OUTER JOIN  #ITM_B B ON A.ITEM = B.ITEM AND A.row = B.row 

這是我得到的結果:

001  LaptopA1     001   LaptopB1
001 LaptopA2      001   LaptopB2
001 LaptopA3      NULL  NULL
002 DesktopA1     002   DesktopB1
002 DesktopA2     002   DesktopB2
003 MouseA1       003   MouseB1
003 MouseA2       003   MouseB2
NULL    NULL      002   DesktopB3
NULL    NULL      002   DesktopB4
NULL    NULL      003   MouseB3

我需要這樣顯示:

001 LaptopA1    001 LaptopB1
001 LaptopA2    001 LaptopB2
001 LaptopA3    NULL    NULL
002 DesktopA1   002 DesktopB1
002 DesktopA2   002 DesktopB2
NULL    NULL    002 DesktopB3
NULL    NULL    002 DesktopB4
003 MouseA1     003 MouseB1
003 MouseA2     003 MouseB2
NULL   NULL     003 MouseB3

您只需要通過以下方式添加訂單:

SELECT A.ITEM,A.Designation1,B.ITEM,B.Designation2 
FROM #ITM_A A
FULL OUTER JOIN  #ITM_B B ON A.ITEM = B.ITEM AND A.row = B.row 
order by isnull(A.ITEM,B.ITEM)

為了獲得所需的輸出,您只需要添加:
查詢末尾的ORDER BY ISNULL(A.ITEM,B.ITEM)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM