当前位置: 首页 > news >正文

用app怎么样建网站wordpress分类翻页404

用app怎么样建网站,wordpress分类翻页404,自己做商务网站有什么利弊,WordPress网页描述标签在 MySQL 中,行转列(Pivot)和列转行(Unpivot)是常见的数据转换需求。以下是这两种操作的实现方式: 行转列(Pivot) 行转列是将多行数据转换为一行多列的操作。 1. 使用 CASE WHEN 和聚…

在 MySQL 中,行转列(Pivot)和列转行(Unpivot)是常见的数据转换需求。以下是这两种操作的实现方式:

行转列(Pivot)

行转列是将多行数据转换为一行多列的操作。

1. 使用 CASE WHEN 和聚合函数

这是最常用的行转列方法,适用于已知转换后列名的情况。

-- 示例数据
CREATE TABLE sales (year INT,quarter INT,amount DECIMAL(10,2)
);INSERT INTO sales VALUES
(2020, 1, 1000),
(2020, 2, 1500),
(2020, 3, 2000),
(2020, 4, 1800),
(2021, 1, 1200),
(2021, 2, 1600),
(2021, 3, 2200),
(2021, 4, 1900);-- 行转列:将季度数据转换为列
SELECT year,SUM(CASE WHEN quarter = 1 THEN amount ELSE 0 END) AS Q1,SUM(CASE WHEN quarter = 2 THEN amount ELSE 0 END) AS Q2,SUM(CASE WHEN quarter = 3 THEN amount ELSE 0 END) AS Q3,SUM(CASE WHEN quarter = 4 THEN amount ELSE 0 END) AS Q4,SUM(amount) AS Total
FROM sales
GROUP BY year;

2. 使用 IF 函数

与 CASE WHEN 类似,但语法更简洁:

SELECT year,SUM(IF(quarter = 1, amount, 0)) AS Q1,SUM(IF(quarter = 2, amount, 0)) AS Q2,SUM(IF(quarter = 3, amount, 0)) AS Q3,SUM(IF(quarter = 4, amount, 0)) AS Q4,SUM(amount) AS Total
FROM sales
GROUP BY year;

3. 动态行转列(当列名不确定时)

当需要转换的列值不固定时,可以使用存储过程动态生成 SQL:

DELIMITER //CREATE PROCEDURE dynamic_pivot()
BEGINSET @sql = NULL;-- 获取所有不同的季度值SELECT GROUP_CONCAT(DISTINCTCONCAT('SUM(IF(quarter = ', quarter, ', amount, 0)) AS Q', quarter)) INTO @sqlFROM sales;-- 构建完整查询SET @sql = CONCAT('SELECT year, ', @sql, ', SUM(amount) AS Total FROM sales GROUP BY year');-- 准备并执行语句PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
END //DELIMITER ;-- 调用存储过程
CALL dynamic_pivot();

列转行(Unpivot)

列转行是将一行多列数据转换为多行数据的操作。

1. 使用 UNION ALL

这是最常用的列转行方法:

-- 示例数据(行转列后的结果)
CREATE TABLE sales_pivoted (year INT,Q1 DECIMAL(10,2),Q2 DECIMAL(10,2),Q3 DECIMAL(10,2),Q4 DECIMAL(10,2),Total DECIMAL(10,2)
);INSERT INTO sales_pivoted VALUES
(2020, 1000, 1500, 2000, 1800, 6300),
(2021, 1200, 1600, 2200, 1900, 6900);-- 列转行:将季度列转换为行
SELECT year, 1 AS quarter, Q1 AS amount FROM sales_pivoted
UNION ALL
SELECT year, 2 AS quarter, Q2 AS amount FROM sales_pivoted
UNION ALL
SELECT year, 3 AS quarter, Q3 AS amount FROM sales_pivoted
UNION ALL
SELECT year, 4 AS quarter, Q4 AS amount FROM sales_pivoted
ORDER BY year, quarter;

2. 使用 CROSS JOIN 和 VALUES(MySQL 8.0+)

MySQL 8.0 引入了 VALUES 语句,可以简化列转行操作:

-- 使用 VALUES 和 CROSS JOIN
SELECT s.year,v.quarter,CASE v.quarterWHEN 1 THEN s.Q1WHEN 2 THEN s.Q2WHEN 3 THEN s.Q3WHEN 4 THEN s.Q4END AS amount
FROM sales_pivoted s
CROSS JOIN (VALUES ROW(1),ROW(2),ROW(3),ROW(4)
) AS v(quarter)
ORDER BY s.year, v.quarter;

使用 JSON 函数进行行列转换(MySQL 5.7+)

MySQL 5.7 引入了 JSON 函数,可以用于更灵活的行列转换:

行转列使用 JSON

SELECT year,JSON_OBJECT('Q1', SUM(IF(quarter = 1, amount, 0)),'Q2', SUM(IF(quarter = 2, amount, 0)),'Q3', SUM(IF(quarter = 3, amount, 0)),'Q4', SUM(IF(quarter = 4, amount, 0))) AS quarterly_data
FROM sales
GROUP BY year;

列转行使用 JSON

SELECTyear,js.quarter,js.amount
FROM sales_pivoted,
JSON_TABLE(JSON_OBJECT('Q1', Q1,'Q2', Q2,'Q3', Q3,'Q4', Q4),'$.*' COLUMNS(quarter VARCHAR(10) PATH '$[0]',amount DECIMAL(10,2) PATH '$[1]')
) AS js;

总结

转换类型方法适用场景优点缺点
行转列CASE WHEN/IF + 聚合函数列名已知且固定简单直观,性能好列名固定,不够灵活
行转列动态SQL列名不固定灵活适应数据变化需要编写存储过程,较复杂
列转行UNION ALL任何MySQL版本简单通用代码冗长,性能随列数增加而下降
列转行CROSS JOIN + VALUESMySQL 8.0+代码简洁需要MySQL 8.0+
行列转换JSON函数MySQL 5.7+灵活处理复杂结构语法复杂,性能可能较差

在实际应用中,应根据数据特点、MySQL版本和性能要求选择合适的方法。对于简单的行列转换,CASE WHEN 和 UNION ALL 是最常用且兼容性最好的方法。对于更复杂或动态的需求,可以考虑使用动态SQL或JSON函数。

http://www.dtcms.com/a/448504.html

相关文章:

  • 安徽工程建设官方网站湖南营销网站建设
  • 在酒店做那个网站好seo优化排名易下拉试验
  • 创建qq网站吗珠海网站设计培训学校
  • 临沂网站设计培训班精准客户软件
  • site之后网站在首页说明说明东圃做网站公司
  • 双语网站模板下载在线3d设计家官网
  • 南城县建设局网站湖北省建设人力资源网站
  • 怎么做会员积分网站php网站开发具体的参考文献
  • 网站设计销售温州网站建设设计
  • 这么做国外网站的国内镜像站creative建网站平台
  • 凡客诚品官方网站查询app 程序开发公司
  • 培训网站建设公司中国建设银行官网站e路通下载
  • 昆山兼职做网站惠山网页制作
  • 网站下载的视频怎么变成本地视频室内设计素材网站推荐
  • 自适应网站制作费用河东手机网站建设
  • 大连哪家科技公司做网站好建筑工程网上举报平台官网
  • 网站有哪几种小程序一键开发免费
  • 做有色金属哪个网站好推进门户网站建设
  • 利州区住房和城乡建设部网站山东省建设官方网站
  • 网站开发的功能需求文档模板广州网站外贸推广
  • 用dw做的网页怎么上传到网站python网站开发好吗
  • 用什么网站做动感相册北京网站外包公司推荐
  • 自助游网站开发分析报告总结天价域名排名100
  • 网站建设考试卷a卷迪庆北京网站建设
  • 建设网站证龙华网站建设
  • 安徽网站开发济宁网站建设 企诺
  • 创建网站制作仪表企业三屏网站建设
  • 网站开发的规格描述网站内图片变换怎么做
  • 莆田网站建站东莞 营销网站建设
  • 材料网站建设衡阳seo网络营销方案