2017-04-12 3 views
0

특정 키를 기반으로 한 줄에 배치 된 테이블의 값을 가져 오는 쿼리를 작성하려고합니다. 이 아래에 무엇처럼 보인다 있도록고유 식별자를 기반으로 한 줄에 값을 가져옵니다

table.ID | table.ACCOUNT | 
================================== 
12345  | 456789  | 
12345  | ABCDEF  | 
12345  | HIJKLM  | 

예를 들어, 내가 한 줄에 (위) ID 12345에 대한 모든 계정을 얻을합니다.

table.ID | table.ACCOUNT1 | table.ACCOUNT2 | table.ACCOUNT3 | 
==================================================================== 
12345  | 456789   | ABCDEF   | HIJKLM   | 

은 내가 자체에 테이블을 가입하려는 생각하지만 난 2 층과 3 계정 필드에 같은 값을 (즉, 456789 모두 3에 표시) 점점 계속. 당신이 정말로 모든 계정에 대해 별도의 열을 필요로하지 않는 경우

+0

어떤 RDBMS를 사용하고 있습니까? – Rahul

+0

@ ThiagoCustodio, 아니요. OP는 ID별로 모든 계정 그룹을 나열하려고합니다. RDBMS를 기반으로 SQL Server의 MySQL 및 XML 처리에서 응답이 게시되고'group_concat()'과 같은 여러 가지 방법이 있습니다. – Rahul

답변

0

는 포스트 그레스에 집계 함수와 같은 string_agg을 사용하는 것이 좋습니다 :

SELECT id, string_agg(account, ',') FROM table GROUP BY id 

이 두 개의 열은 ID와 함께 결과를 생성합니다 id에 대한 모든 계정이 포함 된 문자열은 , 자로 구분됩니다.

0

ID 당 최대 3 개의 계정이 있다는 것을 알고 있다면 데이터를 피벗 할 수 있습니다. 대부분의 데이터베이스에서, 당신은 row_number() 조건부 집계 사용할 수 있습니다 : 문자열 집계 방식과 달리

select id, 
     max(case when seqnum = 1 then account end) as account_1, 
     max(case when seqnum = 2 then account end) as account_2, 
     max(case when seqnum = 3 then account end) as account_3 
from (select t.* 
      row_number() over (partition by id order by id) as seqnum 
     from t 
    ) t 
group by id; 

을,이 별도의 컬럼에 값을 넣습니다.

관련 문제