SQL Server Pivot在多个字段上

我已经在该网站上搜索了所有可能的解决方案,但仍然找不到我的Pivot问题的答案。

我有一张包含以下数据的表。

Portfolio  |  Date      |  TotalLoans  | ActiveLoans  | TotalBalance

--------------------------------------------------------------------

P1 | 2015-12-31 | 1,000 | 900 | 100,000.00

P1 | 2015-11-30 | 1,100 | 800 | 100,100.00

P1 | 2015-10-31 | 1,200 | 700 | 100,200.00

我正在尝试使用以下输出创建枢轴(仅在Portfolio = P1的情况下)

Field        | 2015-12-31 | 2015-11-30 | 2015-10-31 |

-----------------------------------------------------

TotalLoans | 1,000 | 1,100 | 1,200 |

ActiveLoans | 900 | 800 | 700 |

TotalBalance | 100,000 | 100,100 | 100,200 |

理想情况下,我正在寻找动态枢纽,但是静态查询也可以,并且我可以尝试动态查询。

回答:

您需要先到

您的桌子。您可以使用以下查询进行操作:

SELECT Portfolio, [Date], Val, ColType

FROM (SELECT Portfolio,

[Date],

TotalLoans,

ActiveLoans,

TotalBalance

FROM mytable

WHERE Portfolio = 'P1') AS srcUnpivot

UNPIVOT (

Val FOR ColType IN (TotalLoans, ActiveLoans, TotalBalance)) AS unpvt

Portfolio   Date      Val      ColType

===============================================

P1 2015-12-31 1000 TotalLoans

P1 2015-12-31 900 ActiveLoans

P1 2015-12-31 100000 TotalBalance

P1 2015-11-30 1100 TotalLoans

P1 2015-11-30 800 ActiveLoans

P1 2015-11-30 100100 TotalBalance

P1 2015-10-31 1200 TotalLoans

P1 2015-10-31 700 ActiveLoans

P1 2015-10-31 100200 TotalBalance

所有 不可透视的字段都必须是 同一类型 。上面的查询假定所有字段的类型均为 int 。如果不是这种情况,则必须使用CAST

使用以上查询,您可以应用PIVOT

SELECT Portfolio, ColType, [2015-12-31], [2015-11-30], [2015-10-31]

FROM (

... above query here ...

PIVOT (

MAX(Val) FOR [Date] IN ([2015-12-31], [2015-11-30], [2015-10-31])) AS pvt

以上是 SQL Server Pivot在多个字段上 的全部内容, 来源链接: utcz.com/qa/408042.html

回到顶部