Сгруппировать все строки в одну строку для данных контекста в SQL - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь сгруппировать однопользовательские данные, которые распространяются в несколько строк в MySQL.
Я пытался использовать группирование, объединяя несколько раз все 4 столбца, но не смог достичь.

Ниже моя таблица и схема

enter image description here

и я пытаюсь получить его в форме ниже как результат

enter image description here

Не могли бы вы помочь мне сформировать запрос в MYSQL

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Присоедините к таблице все максимальные столбцы, которые вы получите после группировки по deviceid:

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
1 голос
/ 28 марта 2019

Вы можете выполнить агрегацию:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...