Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL选择连接表_Mysql_Sql_Pivot - Fatal编程技术网

Mysql SQL选择连接表

Mysql SQL选择连接表,mysql,sql,pivot,Mysql,Sql,Pivot,如果我在MySQL中有一个包含以下数据的表: id Name Value 1 A 4 1 A 5 1 B 8 2 C 9 如何将其转换为以下格式? 这可能吗 id Column Column Column Column Column Column 1 A

如果我在MySQL中有一个包含以下数据的表:

id       Name       Value
1          A          4
1          A          5
1          B          8
2          C          9
如何将其转换为以下格式? 这可能吗

id         Column   Column   Column    Column   Column    Column
1            A        4         A        5         B        8
2            c        9

您可以使用条件聚合:

select id,
       max(case when seqnum = 1 then name end) as name_1,
       max(case when seqnum = 1 then value end) as value_1,
       max(case when seqnum = 2 then name end) as name_2,
       max(case when seqnum = 2 then value end) as value_2,
       max(case when seqnum = 3 then name end) as name_3,
       max(case when seqnum = 3 then value end) as value_3
from (select t.*,
             row_number() over (partition by id order by value) as seqnum
      from t
     ) t
group by id;

您可以使用条件聚合:

select id,
       max(case when seqnum = 1 then name end) as name_1,
       max(case when seqnum = 1 then value end) as value_1,
       max(case when seqnum = 2 then name end) as name_2,
       max(case when seqnum = 2 then value end) as value_2,
       max(case when seqnum = 3 then name end) as name_3,
       max(case when seqnum = 3 then value end) as value_3
from (select t.*,
             row_number() over (partition by id order by value) as seqnum
      from t
     ) t
group by id;

如果你能解释一下你对这个输出的逻辑,那会很有帮助。为什么在一列中只有A和C,在另一列中只有B,在一列中有4和9,在单独的列中有5和8我有一个表,其中有我工作中的活动项目,在另一个表中我有这些项目的更新,使用列:date和comments,我试图查看所有更新,其中日期和注释仅在一行中,id为projects。您考虑过CONCAT()函数吗?据我所知,您没有固定的列计数,因此,如果您返回一个与特定分隔符合并的字符串,并在代码端对其进行解析,则可能会很有用。您可以使用存储过程来执行此操作,但在应用程序端几乎肯定会非常容易。这里有一个答案,请检查您是否可以解释您对此输出的逻辑是什么。为什么在一列中只有A和C,在另一列中只有B,在一列中有4和9,在单独的列中有5和8我有一个表,其中有我工作中的活动项目,在另一个表中我有这些项目的更新,使用列:date和comments,我试图查看所有更新,其中日期和注释仅在一行中,id为projects。您考虑过CONCAT()函数吗?据我所知,您没有固定的列计数,因此,如果您返回一个与特定分隔符合并的字符串,并在代码端对其进行解析,则可能会很有用。您可以使用存储过程来执行此操作,但在应用程序端几乎肯定会非常容易。这里有一个答案,请检查