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

网站建设宣传册内容文档河北省建设执业资格注册管理中心网站

网站建设宣传册内容文档,河北省建设执业资格注册管理中心网站,wordpress 基础主题,网站前缀带wap的怎么做背景 想利用Grafana做数据展示#xff0c;将一维的长表优化成二维数据表格展示。 将一维表转换为二维表#xff0c;也就是将行转换为列#xff0c;可以使用MySQL的PIVOT语句来完成。 PIVOT是一种在关系型数据库中将行转换为列的技术。在MySQL中#xff0c;可以使用PIVOT语…背景 想利用Grafana做数据展示将一维的长表优化成二维数据表格展示。 将一维表转换为二维表也就是将行转换为列可以使用MySQL的PIVOT语句来完成。 PIVOT是一种在关系型数据库中将行转换为列的技术。在MySQL中可以使用PIVOT语句将普通的查询结果转换为一个带有动态列的表格。 PIVOT语句通过将行的值转换为列的值来重新排列数据。在MySQL中PIVOT语句通常使用聚合函数如SUM、MAX、MIN等来对数据进行汇总以便在转换后的表格中每个单元格只有一个值。 假设条件 假设我们有一个名为“orders”的表其中存储了订单的信息包括订单号、商品名称和商品数量 CREATE TABLE orders (order_id INT,product_name VARCHAR(50),quantity INT );现在我们想将这个一维表转换为二维表其中每列都代表一个商品名称每行都代表一个订单数量为该订单中该商品的数量。 实际两种处理情况 若是要转换成的二维表的表头是已知固定的则为静态转换 若是要转换成的二维表的表头是不确定的根据数据动态增加则为动态转换。 静态转换 SELECT order_id,MAX(CASE WHEN product_name Product A THEN quantity END) AS Product A,MAX(CASE WHEN product_name Product B THEN quantity END) AS Product B,MAX(CASE WHEN product_name Product C THEN quantity END) AS Product C FROM orders GROUP BY order_id;或者使用IF判断 SELECT order_id,Sum(if(product_name Product A,quantity,0)) AS Product A,Sum(if(product_name Product B,quantity,0)) AS Product B,Sum(if(product_name Product C,quantity,0)) AS Product C, FROM orders GROUP BY order_id;聚合函数SUM、MAX、MIN可以根据需要替换 动态转换 使用动态SQL生成PIVOT语句的具体实现方法可以根据您的具体情况而定常用以下两种方式 使用存储过程可以编写一个存储过程该存储过程接受列名称作为输入参数并使用动态SQL生成PIVOT语句。存储过程可以将查询结果作为参数返回并将结果集转换为带有动态列的表格。这种方法的好处是可以将查询逻辑封装在存储过程中使代码更加模块化和可重用。 使用预处理语句可以编写一个包含动态列名称的字符串并在MySQL中使用预处理语句来执行动态SQL。这种方法的好处是可以将查询逻辑与数据分离并且可以减少SQL注入的风险。 存储过程方式 创建一个存储过程该存储过程接受列名称作为输入参数并使用动态SQL生成PIVOT语句。以下是一个示例 DELIMITER $$ CREATE PROCEDURE pivot_sales(IN col_name VARCHAR(50)) BEGINSET cols (SELECT GROUP_CONCAT(DISTINCT CONCAT(MAX(CASE WHEN , col_name, , REPLACE(val, , ), THEN amount END) AS , REPLACE(val, , ))) FROM salesCROSS JOIN (SELECT DISTINCT val FROM sales WHERE col_name region) r;SET query CONCAT(SELECT date, , cols, FROM sales GROUP BY date);PREPARE stmt FROM query;EXECUTE stmt;DEALLOCATE PREPARE stmt; END$$ DELIMITER ;说明DEALLOCATE PREPARE语句用于释放由PREPARE语句占用的资源。在MySQL中PREPARE语句用于准备动态SQL并将其存储在MySQL服务器的缓存中。当不再需要动态SQL时可以使用DEALLOCATE PREPARE语句来释放缓存中的语句以释放资源并减少内存使用。 说明DELIMITER是MySQL中的一个命令它用于更改SQL语句的结束符号通常为分号。在默认情况下MySQL使用分号作为SQL语句的结束符号。但是当在存储过程或函数中使用多条SQL语句时分号可能会被解释为SQL语句的结束符号从而导致语法错误。 为了避免这个问题可以使用DELIMITER命令更改SQL语句的结束符号例如将结束符号更改为$$。这样使用分号作为SQL语句的内部结束符号不会与外部SQL语句的结束符号冲突。 在使用DELIMITER命令时应该首先使用DELIMITER命令设置新的结束符号然后编写SQL语句并使用新的结束符号结束SQL语句。最后应该使用DELIMITER命令将结束符号更改回原始值。 调用存储过程并将列名称作为参数传递。以下是一个示例 CALL pivot_sales(region);存储过程中的动态SQL可能会导致SQL注入的风险因此应该谨慎使用并确保输入的列名称是可信的。 预处理语句方式常用 SET cols (SELECT GROUP_CONCAT(DISTINCT CONCAT(MAX(CASE WHEN region , region, THEN sales END) AS , region)) FROM sales);SET query CONCAT(SELECT date, , cols, FROM sales GROUP BY date); PREPARE stmt FROM query; EXECUTE stmt; DEALLOCATE PREPARE stmt;在这个示例中我们使用了MySQL的GROUP_CONCAT函数来动态生成列名称然后使用CONCAT函数将列名称与PIVOT语句组合在一起。最后我们使用PREPARE语句来准备动态SQL并使用EXECUTE语句来执行动态SQL。
http://wiki.neutronadmin.com/news/451592/

相关文章:

  • 做网站图片大小大学生怎么做网站
  • 自建网站需要学哪些深圳建立企业网站
  • 模板建站网页东莞做网站有哪些
  • 网站地图怎么做的scrm和crm如何配合
  • 电子商务网站建设与管理心得十大短视频制作软件
  • 自动成交型网站阿里指数查询入口
  • 和县网站定制企业网站宣传
  • 张家港高端网站制作网站开发职业环境分析
  • 网站会员和discuz会员同步青岛博采网络
  • 在线企业建站模板网站主页图片怎么换
  • 专业的网站建设制作服务做网站最便宜
  • 手机怎么进入国外网站住房和建设局
  • 为什么做营销型网站电脑技术学习网站
  • 化妆品网站开发网站建设的主要技术指什么软件
  • 网站怎么做微信支付宝莱芜都市网人才网
  • 编程教学网站推荐广西建设培训中心网站
  • 学校网站建设招标公告深圳十大建筑设计公司
  • 宛城区建网站做网站每一步的是什么
  • 网站视频怎么做的什么是响应式设计
  • 做网站注意的问题wordpress注册邮件无法打开
  • 新安网站建设物流网站系统php源码
  • 北京网站优化公司哪里稳定做物流的网站
  • 专业网站推广的公司北京制作网站多少钱
  • wordpress建站教程做女装的网站
  • 品牌网站建设的要点潜江资讯网一手机版
  • 广西房地产网站建设一般通过人体的电流超过多大
  • 做餐饮企业网站的费用洛阳网上房地产
  • 淘宝联盟怎么做自己的网站成都网站开发等项目外包公司
  • 网站建设卖点互联网推广手段
  • 网站建设肆金手指排名8轻淘客网站怎么做