Это текущая структура моей таблицы.

enter image description here

Моя цель - настроить его так:

enter image description here

Какой запрос мне нужно сделать, чтобы получить эту настройку?

-1
Adam Chlebek 23 Ноя 2019 в 02:17
2
Пометьте свой вопрос базой данных, которую вы используете: mysql, sql-server, postgresql ...?
 – 
GMB
23 Ноя 2019 в 02:22
1
Образцы данных лучше представить в виде форматированного текста. См. здесь несколько советов о том, как создавать красивые таблицы.
 – 
a_horse_with_no_name
23 Ноя 2019 в 02:31

2 ответа

Вы можете поворачиваться.

SELECT userId, batchId, 
[1] AS typeId1,
[2] AS typeId2,
[3] AS typeId3,
[4] AS typeId4
FROM 
(
    SELECT userId, batchId, typeId, [value] 
    FROM yourtable
) src
PIVOT
(
    MAX([value])
    FOR typeId IN ([1],[2],[3],[4])
) pvt
ORDER BY userId, batchId;

Протестируйте здесь

0
LukStorms 23 Ноя 2019 в 03:06

Использовать условное агрегирование:

select
    userId,
    batchId,
    max(case when typeId = 1 then value end) typeId1,
    max(case when typeId = 2 then value end) typeId2,
    max(case when typeId = 3 then value end) typeId3,
    max(case when typeId = 4 then value end) typeId4
from mytable
group by
    userId,
    batchId
0
GMB 23 Ноя 2019 в 02:19