2016-10-06 144 views
-1

我有兩個表格 - 標題和矩陣/細節。避免連接中的重複值

 
*Header Table*    *Matrix/Details Table* 
+----+--------+-----+  +----+--------+------+ 
| ID | Parent | Qty |  | ID | Child | Qty | 
+----+--------+-----+  +----+--------+------+ 
| 1 | A | 10 |  | 1 | X | 100 | 
| 2 | B | 20 |  | 1 | Y | 1000 | 
| 3 | C | 30 |  | 2 | X | 200 | 
+----+--------+-----+  | 2 | Y | 2000 | 
          | 3 | X | 30 | 
          | 3 | Y | 300 | 
          | 3 | Z | 3000 | 
          +----+--------+------+ 

我正在根據ID加入這兩個表。

我不希望結果從頭表中有重複的值。 我期待像下面這樣的結果:

 
*Current Result*       *Expected Result* 
+----+--------+-----+-------+------+  +----+--------+-----+-------+------+ 
| ID | Parent | Qty | Child | Qty |  | ID | Parent | Qty | Child | Qty | 
+----+--------+-----+-------+------+  +----+--------+-----+-------+------+ 
| 1 | A | 10 | X | 100 |  | 1 | A | 10 | X | 100 | 
| 1 | A | 10 | Y | 1000 |  | |  |  | Y | 1000 | 
| 2 | B | 20 | X | 200 |  | 2 | B | 20 | X | 200 | 
| 2 | B | 20 | Y | 2000 |  | |  |  | Y | 2000 | 
| 3 | C | 30 | X | 30 |  | 3 | C | 30 | X | 30 | 
| 3 | C | 30 | Y | 300 |  | |  |  | Y | 300 | 
| 3 | C | 30 | Z | 3000 |  | |  |  | Z | 3000 | 
+----+--------+-----+-------+------+  +----+--------+-----+-------+------+ 

這可能嗎?如果沒有,備用解決方案可用?

在此先感謝...

+0

您使用的是MySQL還是MS SQL Server?使用Oracle SQL Developer? – jarlh

+0

對許多標籤您使用的是哪個數據庫? – Melchizedek

+0

即時通訊使用SQL Server。對不起,我添加了所有的SQL數據庫名稱。 –

回答

1

如果使用SQL Server,請嘗試使用下面的查詢。

;WITH CTE_1 
AS 
(SELECT *,ROW_NUMBER()OVER(PARTITION BY ID,Parent,Quantity ORDER BY ID) RNO 
FROM Header H 
JOIN [Matrix/Details] M 
ON H.ID=M.ID) 

SELECT CASE WHEN RNO=1 THEN CAST(ID as VARCHAR(50)) ELSE '' END ID, 
     CASE WHEN RNO=1 THEN Parent ELSE '' END Parent, 
     CASE WHEN RNO=1 THEN cast(Quantity as VARCHAR(50)) ELSE '' END Quantity, 
     Child,Qty 
FROM CTE_1 
ORDER BY ID,Parent,Quantity 
+0

加1,2,3的訂單 – Esperento57

+0

@ Esperento57 yup .. included。 –