행 데이터를 열로 변환: 사용자의 최신 이메일 주소 표시
질문:
표에 사용자당 이메일 주소가 여러 개 있고, 생성 날짜를 기준으로 각 사용자의 가장 최근 이메일 주소 3개가 표시되도록 이를 열로 병합하려고 합니다.
예상 출력:
user_name | user_id | email1 | email2 | email3 |
---|---|---|---|---|
Mary | 123 | [email protected] | [email protected] | [email protected] |
Joe | 345 | [email protected] | NULL | NULL |
해결책:
이를 위해 PostgreSQL의 tablefunc 모듈의 crosstab() 기능을 활용할 수 있습니다.
<code class="language-sql">SELECT * FROM crosstab( $$SELECT user_id, user_name, rn, email_address FROM ( SELECT u.user_id, u.user_name, e.email_address , row_number() OVER (PARTITION BY u.user_id ORDER BY e.creation_date DESC NULLS LAST) AS rn FROM usr u LEFT JOIN email_tbl e USING (user_id) ) sub WHERE rn <= 3 ORDER BY user_id, rn $$, 'VALUES (1),(2),(3)' ) AS ct (user_id integer, user_name text, email1 text, email2 text, email3 text);</code>
설명:
참고:
위 내용은 PostgreSQL에서 사용자 이메일의 행 데이터를 열로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!