Mysql将列转换为行(数据透视表)

新手上路,请多包涵

我有一张这样的桌子

+---+-----+----+----+----+----+
|id |month|col1|col2|col3|col4|
+---+-----+----+----+----+----+
|101|Jan  |A   |B   |NULL|B   |
+---+-----+----+----+----+----+
|102|feb  |C   |A   |G   |E   |
+---+-----+----+----+----+----+

然后我想创建这样的报告

+----+---+---+
|desc|jan|feb|
+----+---+---+
|col1|A  |C  |
+----+---+---+
|col2|B  |A  |
+----+---+---+
|col3|0  |G  |
+----+---+---+
|Col4|B  |E  |
+----+---+---+

有人能帮忙吗?

原文由 user1914516 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
1 个回答

( _扩展 这个很好的先前答案,因为目前我的帐户无法编辑或评论_)

虽然这种方法不像以前的 UNION ALL / CASE 方法那么简单,但它的优势在于它可以(“动态地”)用于 任意数量的原始列[ 请在“任何”上纠正我]。

可能导致 不明确错误 的限制是

_group_concat_max_len_ 系统变量,默认值为 1024

在这种情况下,只需尝试类似

SET SESSION group_concat_max_len = 92160;

原文由 Haris 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏