mysql - 如何使用 PIVOT 编写此查询而不会出现“语法错误”
问题描述
SELECT * FROM (
SELECT id, revenue, month FROM Department)
pivot
(MAX (revenue)
FOR month IN (Jan Jan_Revenue, Feb Feb_Revenue,
Mar Mar_Revenue, Apr Apr_Revenue,
May May_Revenue, Jun Jun_Revenue,
Jul Jul_Revenue, Aug Aug_Revenue,
Sep Sep_Revenue, Oct Oct_Revenue,
Nov Nov_Revenue, 'Dec' Dec_Revenue))
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 '(revenue) FOR month IN (Jan Jan_Revenue, Feb Feb_Revenue, Mar Mar' 附近使用正确的语法
解决方案
使用条件聚合:
SELECT id,
max(case when month = 'Jan' then revenue end) as jan_revenue,
max(case when month = 'Feb' then revenue end) as feb_revenue,
. . .
FROM Department d
GROUP BY id;
推荐阅读
- c++ - 在 C++ 中实现 Mergesort 算法时遇到问题,向量的语法
- python - 如何在 Panda DataFrame 中拟合预测值
- c# - 编译器抛出 CS5001 代码,我无法修复
- php - 使用 WebRTC 和 PHP 的多客户端视频流
- oracle - 不处理 no_data_found
- javascript - 服务器将 HTML 转换为 JSON 并将其发送给客户端,客户端(使用 React)如何将 JSON 渲染回 HTML 并显示它?
- sql-server - 需要脚本来识别行计数大小
- vue.js - vuejs 通过在数组中引用 bool 来添加/删除类
- python - 'buildozer android debug deploy run' 给出错误
- reactjs - React Native align-items:基线不起作用