MySQL将行转换为列
对于我的一个项目,我面临着一个独特的问题 当前表格输出:MySQL将行转换为列,mysql,dynamic,pivot,Mysql,Dynamic,Pivot,对于我的一个项目,我面临着一个独特的问题 当前表格输出: CaseKey CustomField Fruits Electronics Sports 1 10320 Apples null null 1 10864 null Laptops null 1 10471 null null cricket 2 10320 Oranges null
CaseKey CustomField Fruits Electronics Sports
1 10320 Apples null null
1 10864 null Laptops null
1 10471 null null cricket
2 10320 Oranges null null
2 10864 null TV null
2 10471 null null baseball
我想要的表结构是按CaseKey分组
CaseKey Fruits Electronics Sports
1 Apples Laptops Cricket
2 Oranges TV BaseBall
当前查询:
select j.pkey as CaseKey,cfv.customfield,
(CASE
WHEN cfv.customfield=10320
THEN cfv.customvalue
END) Fruits,
(CASE
WHEN cfv.customfield=10864
THEN cfv.customvalue
END) AS Electronics,
(
CASE
WHEN cfv.customfield=10310
THEN cfv.customvalue
END)Sports,
from
basetable j
left join customfieldvalue cfv on j.id=cfv.issue
and cfv.customfield in (10320,10864,10471)
-- group by j.id
表结构:basetable
ID CaseKey
4000 1
4001 2
自定义字段值
ID ISSUE CUSTOMFIELD CUSTOMVALUE
1 4000 10320 Apples
2 4000 10864 Laptops
3 4000 10471 Cricket
4 4001 10320 Oranges
5 4001 10864 TV
6 4001 10471 BaseBall
你能告诉我如何达到这个效果吗?我想在Tableau中以CustomSQL的形式运行这个查询,所以我不确定高级SQL是否和动态SQL一样,存储过程是否可以在那里工作。正在寻找一种可以实现此结果的传统SQL 你能试试这个查询吗:(它对我有用,不能用提琴箱……)
您可以使用子查询,如下所示:
select
CaseKey,
(select customvalue from customfieldvalue where issue = b.id and customfield = 10320) as Fruits,
(select customvalue from customfieldvalue where issue = b.id and customfield = 10864) as Electronics,
(select customvalue from customfieldvalue where issue = b.id and customfield = 10471) as Sports
from
basetable as b
输出所需格式的:
+---------+---------+-------------+----------+
| CaseKey | Fruits | Electronics | Sports |
+---------+---------+-------------+----------+
| 1 | Apples | Laptops | Cricket |
| 2 | Oranges | TV | Baseball |
+---------+---------+-------------+----------+
也可以在flavor中找到。您可以分享一下您的桌子结构吗。或者为它创建一个sql FIDLE。你能帮忙吗?这将创建一个单独的列。但我希望水果、电子和体育在我的最终输出中成为三个独立的栏目。你能提供一个建议吗?查询也应该是按案例分组的
+---------+---------+-------------+----------+
| CaseKey | Fruits | Electronics | Sports |
+---------+---------+-------------+----------+
| 1 | Apples | Laptops | Cricket |
| 2 | Oranges | TV | Baseball |
+---------+---------+-------------+----------+