[英]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.