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>
이 쿼리에서:
이 쿼리를 사용하면 "Bank" 테이블의 데이터를 성공적으로 피벗하여 각각 "1"과 "2"의 "val" 값을 포함하는 필수 열 "amountVal1" 및 "amountVal2"를 생성할 수 있습니다. 금액' 값입니다.
위 내용은 CASE WHEN 및 집계를 사용하여 SQL에서 열을 피벗하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!