Я хочу получить 3 результата SQL-запроса в одной строке - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть набор результатов, который имеет 3 записи для каждого набора.Я хочу, чтобы они были в одной строке вместо 3 строк.

Я хочу получить конкретные значения только из этой строки.

enter image description here

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Вы, похоже, хотите условную агрегацию:

select col1, col3,
       max(case when column2 = 'abc' then timestamp1 end) as timestamp1,
       max(case when column2 = 'xyz' then timestamp2 end) as timestamp2,
       max(case when column2 = 'pqr' then timestamp3 end) as timestamp3
from t
group by col1, col3;

Примечание: у меня есть ответ Зайнул, который на самом деле имеет больше смысла для меня, основываясь на предоставленных данных.Проще предположить, что желаемые результаты являются минимальными значениями.Однако это также правильное толкование вопроса, и оно разъясняется в комментариях к этому ответу.

0 голосов
/ 20 февраля 2019

Не уверен в точной логике, которую вы примените, но из этого вопроса мне кажется, что вам просто нужно решить проблему с выравниванием фрейма данных, и запрос, подобный приведенному ниже, должен решить, если это то, что вы ищете,

Select 
    Column1, Column2,
    (select timestamp1 from table 
     where (your logic to filter)) as T1, 
    (select timestamp2 from table 
     where (your logic to filter)) as T2, 
    (select timestamp3 from table 
     where (your logic to filter)) as T3 
from 
    table 
where 
    (your master filter);
0 голосов
/ 04 февраля 2019

использовать агрегатную функцию

select col1,col3,min(timestamp1) as timestamp1,
min(timestamp2) as timestamp2,min(timestamp3) as timestamp3
from t group by  col1,col3
...