如何按年份执行Pivot操作并仅获取2020年的金额总和?
嘿,这个需求其实挺常见的,我分几个常用工具给你说具体怎么实现,你看你用哪个工具就对应着来:
在Excel中实现
- 第一步:选中你的数据区域(要包含年份列和金额列哦)
- 第二步:点击「插入」选项卡中的「数据透视表」,跟着提示确认透视表的放置位置就行
- 第三步:在弹出的「数据透视表字段」面板里做这两步操作:
- 把「年份」字段拖到「筛选器」区域
- 把「金额」字段拖到「值」区域,默认一般是求和,要是不是的话右键值字段选「值字段设置」改成求和就行
- 第四步:在透视表的「年份」筛选器里选中2020,这样就只会显示2020年的金额总计了
在SQL中实现
假设你的表名叫your_table,年份列是year_col,金额列是amount,分两种场景给你代码:
场景一:必须用Pivot语法(比如需要保留透视表结构但只取2020)
如果是SQL Server这类支持原生Pivot的数据库:
SELECT [2020] AS 2020年金额总计 FROM ( SELECT year_col, amount FROM your_table ) AS src PIVOT ( SUM(amount) FOR year_col IN ([2020]) -- 这里只指定2020,透视后就只有这一列 ) AS pvt;
如果是MySQL(没有原生Pivot),用条件聚合模拟:
SELECT SUM(CASE WHEN year_col = 2020 THEN amount ELSE 0 END) AS 2020年金额总计 FROM your_table;
场景二:只需要2020的总计(不用复杂透视)
这种情况直接筛选后求和更简单:
SELECT SUM(amount) AS 2020年金额总计 FROM your_table WHERE year_col = 2020;
在Python Pandas中实现
假设你的数据存在DataFramedf里,年份列是year,金额列是amount:
import pandas as pd # 方法一:用pivot_table生成透视表后取2020年数据 pivot_result = df.pivot_table(values='amount', columns='year', aggfunc='sum') total_2020 = pivot_result[2020].iloc[0] print(f"2020年金额总计:{total_2020}") # 方法二:先筛选2020年数据再求和(效率更高) total_2020 = df.loc[df['year'] == 2020, 'amount'].sum() print(f"2020年金额总计:{total_2020}")
内容的提问来源于stack exchange,提问作者sparc
相关产品推荐
相关产品推荐

