You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中行转列实现咨询:将月度价格表转为横向展示

行转列(Pivot)实现方案

你需要的是**行转列(Pivot)**操作——将原表中Month字段的行值转换为结果表的列名,Price字段的值对应填充到对应列下。

1. 测试表创建与数据插入

SQL Server 版本

-- 创建测试表
CREATE TABLE MonthlyPrices (
    Month INT,
    Price INT
);

-- 插入测试数据
INSERT INTO MonthlyPrices (Month, Price)
VALUES (1, 500), (2, 600), (3, 700);

MySQL 版本

-- 创建测试表
CREATE TABLE MonthlyPrices (
    Month INT,
    Price INT
);

-- 插入测试数据
INSERT INTO MonthlyPrices (Month, Price)
VALUES (1, 500), (2, 600), (3, 700);

2. 行转列查询实现

SQL Server 原生Pivot语法

SELECT [1], [2], [3]
FROM MonthlyPrices
PIVOT (
    MAX(Price)
    FOR Month IN ([1], [2], [3])
) AS PivotTable;

这里用MAX()聚合函数是因为Pivot必须配合聚合操作,由于每个Month对应唯一Price,使用MAX/AVG/MIN的结果一致。

MySQL 模拟Pivot(无原生Pivot语法)

SELECT
    MAX(CASE WHEN Month = 1 THEN Price END) AS `1`,
    MAX(CASE WHEN Month = 2 THEN Price END) AS `2`,
    MAX(CASE WHEN Month = 3 THEN Price END) AS `3`
FROM MonthlyPrices;

通过CASE语句配合聚合函数,手动将行值映射为列名。

执行结果

执行上述查询后,会得到如下横向展示的结果:

123
500600700

内容的提问来源于stack exchange,提问作者Kibofigs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:55:15