如何在SQL中创建Pivot表?如何通过SQL查询关联两张表?
SQL透视表创建及数据转换方案
1. 如何在SQL中创建Pivot(透视表)?
SQL实现透视表的核心是把行维度的数据转成列,主流有两种实现方式:
- 用数据库原生的
PIVOT关键字(比如SQL Server、Oracle支持),适合已知要转成列的具体值的场景; - 用条件聚合(所有数据库通用),写法更灵活,适配各类数据场景。
核心操作步骤:
- 确定作为行分组的字段(比如日期、类别);
- 指定要转成列的字段(比如货币ID、产品类型);
- 搭配对应聚合函数(比如MAX、SUM,若每行对应唯一值,用MAX/MIN即可)。
2. 如何通过SQL查询从第一张表得到第二张表的结果?
假设原始表名为ExchangeRates,提供两种可行写法:
方法一:使用PIVOT关键字(SQL Server/Oracle适用)
SELECT Date, [1] AS Currency1, [2] AS Currency2 FROM ExchangeRates PIVOT ( MAX(Rate) -- 每个日期+货币ID仅一条数据,MAX/MIN/AVG均可用 FOR CurrencyID IN ([1], [2]) -- 指定要转成列的CurrencyID值 ) AS PivotResult;
方法二:条件聚合(全数据库通用,如MySQL、PostgreSQL)
SELECT Date, MAX(CASE WHEN CurrencyID = 1 THEN Rate END) AS Currency1, MAX(CASE WHEN CurrencyID = 2 THEN Rate END) AS Currency2 FROM ExchangeRates GROUP BY Date;
两种写法都能得到目标表结果,条件聚合的通用性更强,无需依赖数据库特定的PIVOT语法。
内容的提问来源于stack exchange,提问作者Shahab Abdollahzadeh
相关产品推荐
相关产品推荐

