gpt4 book ai didi

SQL Server 在多个字段上进行透视

转载 作者:行者123 更新时间:2023-12-03 02:08:16 25 4
gpt4 key购买 nike

我已在此网站上搜索所有可能的解决方案,但仍然找不到我的 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 |

理想情况下,我正在寻找动态枢轴,但静态查询也可以,我可以尝试从中尝试动态查询。

最佳答案

您首先需要UNPIVOT你的 table 。您可以使用以下查询来完成此操作:

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 在多个字段上进行透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com