Mysql 使用sql对多个字段进行分组

Mysql 使用sql对多个字段进行分组,mysql,sql,Mysql,Sql,在进行了一些连接和其他操作之后,我得到了以下格式的表 name session_id status time abc 1 10 xyz 2 11 jack 2 10 zuck 1 10 paul 1 10 现在我希望我的结果像这样分组 session_id name+status

在进行了一些连接和其他操作之后,我得到了以下格式的表

name    session_id   status  time
abc         1          10
xyz         2          11 
jack        2          10
zuck        1          10 
paul        1          10 
现在我希望我的结果像这样分组

session_id   name+status                   time
1            abc:10, zuck:10, paul:10
2            xyz:11, jack:11             

结果集是按时间排序的,我不太清楚如何使用group by实现这一点。如果您的数据库是oracle,您可以试试。在oracle 11g r2之后,您还可以使用Listag

select session_id, wm_concat(name_status), time from 
(
  select session_id, (name+':'+status) as name_status, time
  from stuff
)
group by session_id
order by time

如果您的数据库是oracle,则可以尝试。在oracle 11g r2之后,您还可以使用Listag

select session_id, wm_concat(name_status), time from 
(
  select session_id, (name+':'+status) as name_status, time
  from stuff
)
group by session_id
order by time
如果所有具有相同会话id的行都具有相同的时间(如果时间在功能上依赖于会话id),则可以使用时间(而不是时间)。如果情况并非如此,并且使用
时间
,则无法在该列上获得一致的结果


如果所有具有相同会话id的行都具有相同的时间(如果时间在功能上依赖于会话id),则可以使用时间(而不是时间)。如果情况并非如此,并且您使用
时间
,您将无法在该列上获得一致的结果。

对于哪个数据库?你试过什么?我的数据库是Mysql。。。我不知道该怎么做。。。我正在尝试按会话id分组,但这不会以所需格式为哪个数据库提供结果?你试过什么?我的数据库是Mysql。。。我不知道该怎么做。。。我正在尝试按会话id分组,但这不会给出所需格式的结果,然后使用group\u concat。谢谢,这正是我需要的,但我还有一个问题。。。我的sql类似于组\u concat(u.firstname、\'\',u.lastname、\':\',s.守时\u状态),但在某些情况下,此s.守时\u状态可以为空。。。有没有一种方法可以让我指定一些默认值,比如-1,以防它为空,因为在这样一个例子中没有显示任何结果case@user401445:使用
合并(状态-1)
而不是
状态
,然后使用组连接。谢谢,这正是我需要的,但我还有一个问题。。。我的sql类似于组\u concat(u.firstname、\'\',u.lastname、\':\',s.守时\u状态),但在某些情况下,此s.守时\u状态可以为空。。。有没有一种方法可以让我指定一些默认值,比如-1,以防它为空,因为在这样一个例子中没有显示任何结果case@user401445:使用
合并(状态-1)
而不是
状态