값은 다음과 같이 들어있습니다.
a b c
----------------------------
1 5 2
1 6 3
2 1 1
2 15 8
a b c는 각각의 출력값에 대한 매칭을 표시한 거고요.
a b c b c a b c b c
------------------------------------
1 (5 2번, 6 3번) , 2 (1 1번, 15 8번) - 이와 같이 출력값이 나와야 합니다.
------------------------------------
반복문에 의한 처리밖에 생각이 안나서 질문을 드려봅니다.
바쁘신 와중에 죄송해요 ^^
데이터가 a 기준으로 무조건 2개 라는 가정입니다..
예시로 들어주신 데이터 토대로
--쿼리 시작
With table_a As
(
Select 1 As a, 5 As b , 2 As c Union All
Select 1 As a, 6 As b , 3 As c Union All
Select 2 As a, 1 As b , 1 As c Union All
Select 2 As a, 15 As b , 8 As c
)
,table_b As
(
Select
a As a
,b As b
,c As c
,ROW_NUMBER() over (Partition By a Order By a Asc,b Asc,c Asc) As seq
From table_a As a
)
,table_c As
(
Select
a.a As a
,a.b As b
,a.c As c
,num = 1
,( Select
COUNT(1) As cnt
From table_b As b
Where b.seq <> 1
And b.a = a.a
) As cnt
,a.seq As seq
From table_b As a
Where a.seq = 1
)
Select
a.a As a
,a.b As a
,a.c As c
,ISNULL(b.b,Null) As bb
,ISNULL(b.c,Null) As cc
From table_c a
Left Outer Join
(
Select
a.a As a
,a.b As b
,a.c As c
From table_b a
Where a.seq <> 1
) b
On a.a = b.a
--쿼리 끝
--결과
a b c bb cc
----------------------------
1 5 2 6 3
2 1 1 15 8
--보탬
a의 값들에 대한 row가 2개 초과(3개 이상)일 경우..
우측으로 열거되는 b,c 의 컬럼들이 더 생성이 되어야 할 듯 한데요..
해당 경우가 존재한다는
가정하에서,
동적쿼리를 이용하여
상기의 table_c 에 있는 cnt 값만큼
반복하여 컬럼을 생성하여 처리하시면 될 듯 합니다.