집 >데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 여러 열(조직 및 위치)이 있는 데이터를 더 넓은 형식으로 피벗하는 방법은 무엇입니까?
여러 열을 사용하여 데이터 피벗
길고 좁은 형식의 데이터를 넓은 테이블 형식으로 재배열하려면 피벗 쿼리가 필수적입니다. 이 특별한 경우에는 org와 position이라는 두 개의 열이 있는 피벗 형식으로 표시된 데이터를 각 언어(en, fi, sv)에 대한 별도의 열이 있는 더 넓은 형식으로 피벗해야 합니다.
As 말씀하신 것처럼 CONNECT BY 명령을 사용한 피벗 쿼리가 유용할 수 있습니다. 그러나 PIVOT 연산자를 사용하는 더 간단한 접근 방식은 다음과 같습니다.
SELECT user_id, MAX(CASE WHEN lang = 'en' THEN org END) AS org_en, MAX(CASE WHEN lang = 'en' THEN position END) AS position_en, MAX(CASE WHEN lang = 'fi' THEN org END) AS org_fi, MAX(CASE WHEN lang = 'fi' THEN position END) AS position_fi, MAX(CASE WHEN lang = 'sv' THEN org END) AS org_sv, MAX(CASE WHEN lang = 'sv' THEN position END) AS position_sv FROM source GROUP BY user_id
MAX() 함수는 각 사용자 ID 및 언어 조합과 관련된 최신 값을 검색하는 데 사용됩니다. 또는 특정 요구 사항에 따라 SUM()과 같은 집계 함수를 사용할 수 있습니다.
이 쿼리는 원하는 출력을 생성합니다.
user_id | org_fi | position_fi | org_en | position_en | org_sv | position_sv |
---|---|---|---|---|---|---|
1001 | USD | Bossa | USE | Boss | NULL | NULL |
1002 | NULL | NULL | NULL | NULL | GWR | Dim |
1003 | GGA | DCS | NULL | NULL | GCA | DDD |
MAX() 함수를 조정해야 합니다. 실제 데이터와 요구 사항을 기반으로 한 CASE 표현식입니다. 이 접근 방식을 사용하면 여러 열을 사용하여 데이터를 효과적으로 회전할 수 있으므로 분석 및 프레젠테이션 요구 사항에 더 적합한 형식으로 데이터를 표현할 수 있는 유연성이 제공됩니다.
위 내용은 SQL을 사용하여 여러 열(조직 및 위치)이 있는 데이터를 더 넓은 형식으로 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!