Case 문을 사용하여 SQL 테이블의 데이터 전치
SQL에서 데이터 전치란 행과 열이 바뀌는 데이터 세트를 변환하는 것을 의미합니다. 제공된 것과 유사한 구조를 가진 테이블을 바꾸려면:
Id | UserId | FieldName | FieldValue |
---|---|---|---|
1 | 100 | Username | John Doe |
2 | 100 | Password | pass123! |
3 | 102 | Username | Jane |
4 | 102 | Password | $ecret |
5 | 102 | Email Address | [email protected] |
바뀐 형식으로:
UserId | Username | Password | Email Address |
---|---|---|---|
100 | John Doe | pass123! | |
102 | Jane | $ecret | [email protected] |
한 가지 접근 방식은 group by 절과 함께 여러 CASE 문을 사용하는 것입니다.
SELECT t.userid MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username, MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password, MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email FROM TABLE t GROUP BY t.userid
이 쿼리는 각 사용자 및 필드 조합의 최대값을 계산합니다. CASE 문은 FieldName 필드의 값을 기반으로 반환할 필드 값을 정의합니다.
그러나 이 방법을 사용하려면 각 특정 필드 이름에 대해 CASE 문을 정의해야 합니다. 동적 솔루션의 경우 MySQL의 준비된 명령문(동적 SQL) 구문을 사용하여 쿼리를 생성하는 것이 좋습니다.
위 내용은 CASE 문을 사용하여 SQL의 데이터를 전치하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!