SQL 열 피벗에 CASE WHEN 사용
SQL 데이터를 행에서 열로 변환해야 합니까? CASE WHEN
문은 특히 집계가 필요한 열에 중복 값이 포함된 테이블을 처리할 때 피벗을 위한 간단한 솔루션을 제공합니다.
예를 들어 설명해 보겠습니다. 다음 테이블을 상상해보세요:
<code class="language-sql">Bank: name val amount John 1 2000 Peter 1 1999 Peter 2 1854 John 2 1888</code>
우리의 목표: 고유한 "val" 값이 열이 되고 각 고유한 "이름"이 행이 되는 테이블로 이를 재구성하는 것입니다. 원하는 출력:
<code class="language-sql">name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854 </code>
SUM()
및 CASE WHEN
을 사용하여 이 피벗을 달성하는 방법은 다음과 같습니다.
<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>
이 쿼리는 SUM()
을 사용하여 각 고유 amount
및 name
조합에 대한 val
값을 집계합니다. CASE WHEN
문은 val
이 1인지 2인지 확인하고 그에 따라 해당 amount
을 할당합니다. GROUP BY name
은 고유한 이름당 하나의 행을 보장합니다. 결과는? amountVal1
및 amountVal2
열은 피벗된 데이터를 깔끔하게 표현합니다. 이 방법은 알려진 제한된 수의 val
값에 효과적입니다. 동적인 값의 경우 PIVOT 또는 기타 고급 기술을 사용하는 것이 좋습니다.
위 내용은 행 데이터를 열로 변환하기 위해 CASE WHEN을 사용하여 SQL 열을 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!