SQL行转列,

现在数据是这样的,

image.png


目标显示样式

image.png


想要把历史年度转换为行,应该如何处理呢?

chen_fei2928 发布于 2020-7-22 11:06
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
13207222709Lv6高级互助
发布于2020-7-22 11:40(编辑于 2020-7-22 15:17)
SELECT
	debt.debt_run_number 流水号,
	debt.comp_code 项目编码,
	debt.comp_allname 项目全称,
	debt.area 区域,
	debt.company_leader 项目负责人,
	debt.current_year 当前年度,
	MAX( CASE debt_detail1.history_year WHEN 2017 THEN debt_detail1.history_year_debt ELSE '0' end) 2017年,
	MAX( CASE debt_detail1.history_year WHEN 2018 THEN debt_detail1.history_year_debt ELSE '0' end) 2018年,
	MAX( CASE debt_detail1.history_year WHEN 2017 THEN '0' WHEN 2018 THEN '0' ELSE debt_detail1.history_year_dept end) 2017年以前 
FROM
	debt INNER JOIN debt_detail1 ON debt.debt_run_number = debt_detail1.debt_run_number 
GROUP BY
	debt.debt_run_number ,
	debt.comp_code ,
	debt.comp_allname ,
	debt.area ,
	debt.company_leader ,
	debt.current_year


  • chen_fei2928 chen_fei2928(提问者) select debt.debt_run_number 流水号, debt.comp_code 项目编码, debt.comp_allname 项目全称, debt.area 区域, debt.company_leader 项目负责人, debt.current_year 当前年度, debt_detail1.history_year 历史年度, debt_detail1.history_year_debt 历史年度欠款, MAX(case debt_detail1.history_year when 2017 then debt_detail1.history_year_debt else \'0\') 2017年, MAX(case debt_detail1.history_year when 2018 then debt_detail1.history_year_debt else \'0\') 2018年, MAX(case debt_detail1.history_year when 2017 then \'0\' when 2018 then \'0\' else debt_detail1.history_year_dept ) 2017年以前 from debt INNER JOIN debt_detail1 on debt.debt_run_number = debt_detail1.debt_run_number group by 我这样一直提示我有问题呢? [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \') 2017年, MAX(case debt_detail1.history_year when 2018 then debt_detail1.hi\' at line 11
    2020-07-22 14:42 
  • 13207222709 13207222709 回复 chen_fei2928(提问者) 没有加END MAX(case dept_detaill.history_year when 2017 then dept_detaill.history_year_dept else \'0\' end ) 2017年,
    2020-07-22 14:52 
  • chen_fei2928 chen_fei2928(提问者) 回复 13207222709 select debt.debt_run_number 流水号, debt.comp_code 项目编码, debt.comp_allname 项目全称, debt.area 区域, debt.company_leader 项目负责人, debt.current_year 当前年度, debt_detail1.history_year 历史年度, debt_detail1.history_year_debt 历史年度欠款, MAX(case debt_detail1.history_year when 2017 then debt_detail1.history_year_debt else \'0\' END) 2017年, MAX(case debt_detail1.history_year when 2018 then debt_detail1.history_year_debt else \'0\' END) 2018年, MAX(case debt_detail1.history_year when 2017 then \'0\' when 2018 then \'0\' else debt_detail1.history_year_debt END) 2017年以前 from debt INNER JOIN debt_detail1 on debt.debt_run_number = debt_detail1.debt_run_number GROUP BY 还是报错 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'\' at line 19 19行是 group by
    2020-07-22 15:03 
  • 13207222709 13207222709 回复 chen_fei2928(提问者) 你group by后面要补全,我是省略了,看新编辑后的回答
    2020-07-22 15:15 
  • chen_fei2928 chen_fei2928(提问者) 可以了,谢谢,另外问一下,你是怎么粘贴到论坛代码格式的
    2020-07-22 15:45 
最佳回答
0
张洪威Lv6高级互助
发布于2020-7-22 11:08

帆软里面设置横向拓展就行了

  • 3关注人数
  • 632浏览人数
  • 最后回答于:2020-7-22 15:17
    请选择关闭问题的原因
    确定 取消
    返回顶部