SQL查询以在下列情况下使用大小写透视列

SQL查询以在下列情况下使用大小写透视列,sql,pivot,Sql,Pivot,我有下表: 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 name amountVal1 amountVal2 John

我有下表:

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    
name  amountVal1 amountVal2  
John    2000        0
Peter   1999        0
John    0          1888   
Peter   0          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        1888   
Peter   1999        1854    
name  amountVal1 amountVal2  
John    2000        0
Peter   1999        0
John    0          1888   
Peter   0          1854    
如何修改查询以提供正确的表示?
谢谢

看起来您需要自己加入表格。试试这个:

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

这就成功了。我试着在没有总和的情况下使用Group by,但没有效果。现在我看到您可以有相同的名称,在amountVal1/2列下有许多不同的值。因此,我假设按名称分组的
不知道如何处理这些数字。在这种情况下,我们需要告诉它求和!谢谢你的帮助谢谢我想这也行,但是如果可能的话我不想创建临时表。@Roger:这不会创建任何临时表。在某些情况下,它甚至可能比逐例分组的方法更快。但是,如果有人只在
val=1
val=2
中有行,则会显示不同的结果。或具有多个具有相同值的行。