Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql纵表转横表

作者:_永恒灬莫言   发布日期:2026-01-05   浏览:50

-- 示例代码:MySQL 纵表转横表

-- 假设我们有一个纵表 `sales`,结构如下:
-- | id | product | sales_amount |
-- |----|---------|--------------|
-- | 1  | A       | 100          |
-- | 2  | B       | 200          |
-- | 3  | A       | 150          |
-- | 4  | C       | 300          |
-- | 5  | B       | 250          |

-- 我们希望将其转换为横表,结果如下:
-- | product_A | product_B | product_C |
-- |-----------|-----------|-----------|
-- | 250       | 450       | 300       |

-- 使用 CASE WHEN 进行纵表转横表
SELECT 
    SUM(CASE WHEN product = 'A' THEN sales_amount ELSE 0 END) AS product_A,
    SUM(CASE WHEN product = 'B' THEN sales_amount ELSE 0 END) AS product_B,
    SUM(CASE WHEN product = 'C' THEN sales_amount ELSE 0 END) AS product_C
FROM sales;

-- 如果产品种类不确定或非常多,可以使用动态SQL来生成查询语句
SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(CASE WHEN product = ''',
      product,
      ''' THEN sales_amount ELSE 0 END) AS `',
      product, '`'
    )
  ) INTO @sql
FROM sales;

SET @sql = CONCAT('SELECT ', @sql, ' FROM sales');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

这段代码展示了如何在 MySQL 中将纵表转换为横表。首先通过 CASE WHEN 语句实现静态的纵表转横表,然后通过动态 SQL 实现更灵活的转换,适用于产品种类较多的情况。

上一篇:mysql类型转换

下一篇:如何重启mysql

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站