2016-11-12 1 views
1

두 행으로 그룹화하고 동일한 행의 다른 두 행의 값을 단일 행의 다른 열에 배치하려고합니다. 아래가 my입니다. 표 enter image description here"다른 행의 열"을 "단일 행의 다른 열"에 배치하는 방법

예를 들어, I는 (LEDGERNAME로 (LEDGERNAME 그 VOUCHER_BY 박사이다)에 의해, (두 행에서 동일한)이 ref_no한다 단일 row.In에는 1 & 2 행에 하나의 행 원함 VOUCHER_BY가 Cr 인 경우), AMOUNT (두 행 모두 동일) 또는 이와 유사 함 - enter image description here

오라클 데이터베이스를 사용했습니다. 어떻게해야합니까?

답변

2

단순합니다. 자체 조인 :

0

REF_NO,AMOUNT에 대한 사용 GROUP BY, 그 MINLEDGERNAMEMAX 있도록 당신에게 BYTO을 줄 것이다.

다음과 같은 솔루션이 작동해야합니다

SELECT REF_NO,min(LEDGERNAME) as 'BY',MAX(LEDGERNAME) as 'TO',AMOUNT 
    FROM [yourtable] 
    GROUP BY REF_NO,AMOUNT 
+1

반대 순서로 ledgername을 사용하면 어떻습니까? 그것은 잘못된 방법입니다. – GurV

0

나는 Kumar_Vikas가 한 발 더 나아가겠다. 포스터는 voucher_by가 Dr이면 "BY"열이 필요하고 Cr이면 "TO"열로 가야합니다.

SELECT REF_NO as ref_no 
     ,max(case when voucher_by='Dr' then LEDGERNAME end) as 'BY' 
     ,MAX(case when voucher_by='Cr' then LEDGERNAME end) as 'TO' 
     ,MAX(AMOUNT) as Amount 
    FROM [yourtable] 
GROUP BY REF_NO 
관련 문제