복붙노트

[SQL] SQL 쿼리에 대한 피벗 CASE WHEN를 사용하여 열을

SQL

SQL 쿼리에 대한 피벗 CASE WHEN를 사용하여 열을

나는 다음과 같은 테이블이 있습니다 :

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

나는 다음과 같은 결과를 제공하는 SQL 쿼리를 작성하는 것을 시도하고있다 :

name  amountVal1 amountVal2  
John    2000        1888   
Peter   1999        1854    

지금까지 나는이있다 :

SELECT name,
CASE WHEN val = 1 THEN amount ELSE 0 END AS amountVal1,
CASE WHEN val = 2 THEN amount ELSE 0 END AS amountVal2
FROM bank

그러나, 약간 잘못된 결과를 제공합니다 :

name  amountVal1 amountVal2  
John    2000        0
Peter   1999        0
John    0          1888   
Peter   0          1854    

어떻게 올바른 프레젠테이션을 내 쿼리를 수정할 수 있습니까?  감사

해결법

  1. ==============================

    1.

    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
    
  2. ==============================

    2.당신 같은 외모 자체에 테이블에 가입해야합니다. 이 시도:

    당신 같은 외모 자체에 테이블에 가입해야합니다. 이 시도:

    select bank1.name, bank1.amount, bank2.amount
    from bank bank1
    inner join bank bank2 on 
        bank1.name = bank2.name 
        and bank1.val = 1 
        and bank2.val = 2
    
  3. from https://stackoverflow.com/questions/5846007/sql-query-to-pivot-a-column-using-case-when by cc-by-sa and MIT license