2016-10-06 2 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까지 포함. –

관련 문제