Mysql SQL选择连接表
如果我在MySQL中有一个包含以下数据的表: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
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()函数吗?据我所知,您没有固定的列计数,因此,如果您返回一个与特定分隔符合并的字符串,并在代码端对其进行解析,则可能会很有用。您可以使用存储过程来执行此操作,但在应用程序端几乎肯定会非常容易。这里有一个答案,请检查