透视多个聚合列

Pivot on multiple aggregated columns

我无法解决以下问题。我的 table 结构:

ID Type Price Currency
1   A    100    USD
1   B    200    EUR
1   C    300    CAD
2   A    400    EUR
2   B    500    EUR
2   C    600    USD

我需要得到以下结果:

ID   A  A_Currency B    B_Currency  C C_Currency  
 1  100    USD     200    EUR      300    CAD
 2  400    EUR     500    EUR      600    USD  

在这一点上,我能够在没有像这样的货币的情况下成功地生产 table:

select ID, p.A, p.B, p.C from 
(select ID, Price, Type from MyTable) as x
pivot(Max(Price) for Type in 
(A, B, C)) as p

而且效果很好。但现在我真的不知道如何为每种类型添加货币。我试着把它放在 select 中,但它不起作用,而且 PIVOT 不接受多列。

例子

Select *
 From (
        Select ID
              ,B.*
         From  YourTable A
         Cross Apply ( values ( concat(A.Type,'_Currency'),A.Currency)
                             ,( A.Type,cast(A.Price as varchar(50)))
                     ) B(Item,Value)
      ) A
 Pivot (max(Value) for Item in ([A],[A_Currency],[B],[B_Currency],[C],[C_Currency]) ) p

Returns

ID  A     A_Currency    B     B_Currency    C     C_Currency
1   100   USD           200   EUR           300   CAD
2   400   EUR           500   EUR           600   USD