在mybatis项目中实现mysql列转行

表单设计

CREATE TABLE `erp_apply_form` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长id',
  `form_title` varchar(100) DEFAULT NULL COMMENT '表单抬头,如果是容器或者表格,容器表格头名称',
  `form_value` varchar(1000) DEFAULT NULL COMMENT '表单值',
  `form_group_id` int(11) DEFAULT NULL COMMENT '表单组,多个表单纳入一个组里,此值等于组的id''',
  `table_num` int(11) DEFAULT NULL COMMENT '行号',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `form_group_id` (`form_group_id`)
)

1、初始效果

2、行转列效果

3、最终列合并效果

 

sql实现


select 

#列合并
GROUP_CONCAT(changeContext SEPARATOR '') changeContext,
GROUP_CONCAT(changeBefore SEPARATOR '') changeBefore,
GROUP_CONCAT(changeAfter SEPARATOR '') changeAfter,
GROUP_CONCAT(isChange SEPARATOR '') isChange
from(

    #行转列
    select
        table_num,
        (case when form_title='变更内容' then form_value else '' end) as 'changeContext',
        (case when form_title='变更前' then form_value else '' end) as 'changeBefore',
        (case when form_title='变更后' then form_value else '' end) as 'changeAfter',
        (case when form_title='是否变化' then form_value else '' end) as 'isChange'
    from 
        erp_apply_form
    WHERE
    form_group_id='63912' ORDER BY id

) form
GROUP BY form.table_num

注意事项:
GROUP_CONCAT:列合并  
SEPARATOR :设置分隔符

 


版权声明:本文为wzwsq原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。