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 |
+---------+---------+-------------+----------+