아래와 같이 데이터가 있습니다.
첨에는 A테이블에는 고유한 값들만 들어올지 알았는데 그렇지 않게 되었습니다.
Atable | Btable | ||
이름 | 이름 | 고유코드 | |
A | A | a | |
A | B | c | |
A | C | d | |
B | |||
C |
ATable에 데이터가 들어오면 사용자가 보고 BTable로 데이터를 전송을 합니다.
그때 BTable에는 고유코드가 하나 생성이 되면서 insert가 되는데요.
사용자 페이지에서 새로운 데이터냐 아니냐를 구분을 하기 위해서
Select A.이름 , B.고유코드 from ( Select * Atable ) A left outer join ( Select * Btable) B on A.이름 = B이름
으로 해서 뽑아서 데이터를 봤었는데요. 결과값이 아래와 같이 나오게 됩니다.
이름 | 고유코드 |
A | a |
A | a |
A | a |
B | c |
C | d |
결과값을 아래와 같이 나오게 할 수 없을까요?
이름 | 고유코드 |
A | a |
A | |
A | |
B | c |
C | d |
Table에 추가적으로 값이 들어가거나, 변경은 불가한 상태입니다.
Comment 1
-
자리비움
2016.07.10 01:56
DECLARE @T1 TABLE ( NAME VARCHAR(10) )
DECLARE @T2 TABLE ( NAME VARCHAR(10), CODE VARCHAR(10) )
INSERT INTO @T1 ( NAME ) VALUES ( 'A' ), ( 'A' ), ( 'A' ), ( 'B' ), ( 'C' )
INSERT INTO @T2 ( NAME, CODE ) VALUES ( 'A', 'a' ), ( 'B', 'c' ), ( 'C', 'd' )
SELECT A.NAME
, CODE = ( CASE WHEN A.SEQ = 1 THEN ISNULL(B.CODE,'') ELSE '' END )
FROM (
SELECT SEQ = ROW_NUMBER() OVER ( PARTITION BY NAME ORDER BY NAME ASC )
, NAME
FROM @T1
) AS A
LEFT OUTER JOIN @T2 AS B ON B.NAME = A.NAME
NAME CODE
---------- ----------
A a
A
A
B c
C d
(5개 행이 영향을 받음)
cmd_comment_vote_user Upvote0 Downvote0