mysql - 简单的 PIVOT 查询引发错误消息
问题描述
我使用以下 SQL 从我们的数据库中获取访问:
SELECT
t.country, MONTH(visit_date), t.visits
FROM
visits t
WHERE
t.visit_date BETWEEN '2017-01-01' AND '2017-12-31'
ORDER BY
t.country
此查询的结果如下所示:
Country Month Visits
-------------------------------
DE 1 5.000
DE 2 6.000
: : :
: : :
US 1 5.400
US 2 3.000
: : :
: : :
到目前为止,这一切都很好。
现在我想旋转结果,使其最终看起来像这样:
1 2 3 4
DE 10.000 15.000 30.000 20.000
US 20.220 18.400 40.000 19.000
因此我尝试使用以下 SQL:
SELECT
*
FROM
(SELECT t.country, MONTH(visit_date), t.visits
FROM visits t
WHERE t.visit_date BETWEEN '2017-01-01' AND '2017-12-31'
ORDER BY t.country) AS s
PIVOT
(SUM(t.visits)
FOR MONTH(t.visit_date) IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
) AS pvt
但是,此查询会引发错误:
错误代码:1064。您的 SQL 语法有错误;检查与您的数据库服务器版本相对应的手册,以了解在 'PIVOT ( SUM(t.unique_visits) FOR MONTH(t.visit_date) IN (1, 2, 3, 4, 5, 6, 7,' ) 附近使用的正确语法在第 7 行
您知道我的查询中哪里有错误吗?
解决方案
In MySQL you don't have PIVOT function.
In case you can use alternative ways with connect SUM values.
Good example you find in THIS LINK
推荐阅读
- android - 可以在导航抽屉中加载布局吗?
- android - Okhttp 缓存文件未创建(不工作 okhttp 缓存)
- python - Python 的 ADT 优先级队列
- swift - 为什么迁移后 Realm 的架构版本会重置为 0?
- php - PHP array_sum 输出单个数字而不是整体
- typescript - 使用 Typescript 但没有 Webpack/ts-loader 的 Vue 类型检查
- python-3.x - os.path.join 在某些情况下给出不正确的输出
- python - 各种 python 安装的 pip3 列表
- java - 使用 Apache Camel 并行处理多个文件
- amazon-web-services - AWS Cognito 基于角色的授权