> 데이터 베이스 > MySQL 튜토리얼 > CASE WHEN 및 집계를 사용하여 SQL에서 열을 피벗하려면 어떻게 해야 합니까?

CASE WHEN 및 집계를 사용하여 SQL에서 열을 피벗하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-11 16:08:42
원래의
748명이 탐색했습니다.

How Can I Pivot a Column in SQL Using CASE WHEN and Aggregation?

SQL의 CASE WHEN 문을 사용하여 열 피벗

관계형 데이터베이스에서는 데이터를 분석하거나 표시하기 위해 데이터를 다른 형식으로 재구성해야 하는 경우가 많습니다. 일반적인 변환 중 하나는 여러 데이터 행을 단일 행으로 결합하는 피벗입니다.

질문:

"name", "val" 및 "amount" 열이 있는 "Bank"라는 테이블을 생각해 보세요.

name val amount
John 1 2000
Peter 1 1999
Peter 2 1854
John 2 1888

목표는 "val" 열을 피벗하고 "amountVal1" 및 "amountVal2"라는 두 개의 새 열을 생성하는 것입니다. 이 열은 "amount" 값을 "1"과 "2"의 "val" 값으로 나타냅니다. 각기. 원하는 출력은 다음과 같습니다.

name amountVal1 amountVal2
John 2000 1888
Peter 1999 1854

해결책:

이 변환을 수행하기 위해 CASE WHEN 표현식을 집계 함수와 함께 사용할 수 있습니다. 다음 SQL 쿼리는 예상된 결과를 얻습니다.

<code class="language-sql">SELECT 
  name,
  SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1,
  SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2
FROM bank GROUP BY name</code>
로그인 후 복사

이 쿼리에서:

  • CASE WHEN 표현식은 각 "val"에 대한 "amount" 값을 검색하고 일치하지 않는 "val" 값을 0으로 변환합니다.
  • SUM() 함수는 각 "이름"에 대한 결과를 집계하여 "val" 값에 해당하는 "amount" 값을 효과적으로 추가합니다.
  • GROUP BY 절은 결과를 "이름"별로 그룹화하여 테이블의 각 고유 이름에 대한 값이 병합되도록 합니다.

이 쿼리를 사용하면 "Bank" 테이블의 데이터를 성공적으로 피벗하여 각각 "1"과 "2"의 "val" 값을 포함하는 필수 열 "amountVal1" 및 "amountVal2"를 생성할 수 있습니다. 금액' 값입니다.

위 내용은 CASE WHEN 및 집계를 사용하여 SQL에서 열을 피벗하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿