Query SQL per ruotare una colonna usando CASE WHEN

Ho la seguente tabella:

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

Sto cercando di scrivere una query SQL per dare il seguente risultato:

 name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854 

Finora ho questo:

 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 

Tuttavia, dà il risultato leggermente sbagliato:

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

Come posso modificare la mia domanda per fornire la presentazione corretta? Grazie

 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 

Sembra che tu debba unirti al tavolo su se stesso. Prova questo:

 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