将所有行分组为一行以获取SQL中的上下文数据

时间:2019-03-28 14:04:49

标签: mysql sql

我正在尝试对散布在mySQL中多行中的单个用户数据进行分组。
我尝试使用分组方式,将所有4列多次连接,但无法实现。

下面是我的表和架构

enter image description here

我正在尝试以以下形式将其作为结果

enter image description here

能帮我在MYSQL中进行查询吗?

2 个答案:

答案 0 :(得分:1)

您可以进行聚合:

select deviceid, max(country), max(affid), max(accountid), max(package)
from table t
group by deviceid;

编辑::如果您使用的是更高版本,则可以使用窗口功能:

select distinct t.Date, t.deviceid, 
       max(t.country) over (partition by t.deviceid) as country,
       max(t.affid) over (partition by t.deviceid) as deviceid,
       . . . 
from table t;

答案 1 :(得分:1)

将按设备ID分组后获得的所有最大列加入表:

select distinct
    t.date, 
    t.deviceid, 
    g.country, 
    g.affid, 
    g.accountid, 
    g.package
from tablename inner join (
  select 
    deviceid, 
    max(country) country, 
    max(affid) affid, 
    max(accountid) accountid, 
    max(package) package
  from tablename
  group by deviceid
) g on g.deviceid = t.deviceid