Извлечение данных в одну строку из нескольких строк

У меня есть таблица с этими столбцами и данными:

Сид шаг cr_time 120 S02 24 июля 35.08.19.000 120 S03 08 июля 24 35.01.19.000 120 S04 09 июля 24 35.02.19.000 121 S02 09 июля 24 35.09.19.000 121 S03 09 июля 24 35.02.19.000 122 S02 24 июля 10.35.19.000 122 S03 10 июля 24 35.03.19.000

Как я могу получить данные таким образом, чтобы для одного cid существовала только строка и отображалась cr_time для шага ('S02', 'S03') - вот так:

Сид S02_cr_time S03_cr_time 120 24 июля 35.08.19.000 08 июля 24 35.01.19.000 121 09 июля 24 35.09.19.000 09 июля 24 35.02.19.000 122 10 июля 24, 35.10.19.000 10 июля 24 35.03.19.000

🤔 А знаете ли вы, что...
SQL поддерживает фильтрацию данных с использованием условий WHERE.


67
2

Ответы:

Решено

Вы можете использовать технику PIVOT здесь. Разворот можно выполнить с помощью GROUP BY и некоторой функции агрегирования (MIN в следующем примере) с условием внутри:

select 
    cid,
    min(case when step = 'S02' then cr_time end) S02_time,
    min(case when step = 'S03' then cr_time end) S03_time
from t
group by cid;

Попробуйте SQL онлайн


Вы можете использовать этот код SQL,

SELECT 
    cid,
    MAX(CASE WHEN step = 'S02' THEN cr_time END) AS S02_cr_time,
    MAX(CASE WHEN step = 'S03' THEN cr_time END) AS S03_cr_time
FROM 
    your_table_name
GROUP BY 
    cid;