MySQL запрос сводной / кросс-таблицы
Вопрос 1: У меня есть таблица с приведенной ниже структурой и данными:
app_id transaction_id mobile_no node_id customer_attribute entered_value
100 111 9999999999 1 Q1 2
100 111 9999999999 2 Q2 1
100 111 9999999999 3 Q3 4
100 111 9999999999 4 Q4 3
100 111 9999999999 5 Q5 2
100 222 8888888888 4 Q4 1
100 222 8888888888 3 Q3 2
100 222 8888888888 2 Q2 1
100 222 8888888888 1 Q1 3
100 222 8888888888 5 Q5 4
Я хочу отобразить эти записи в следующем формате:
app_id | transaction_id | mobile | Q1 | Q2 | Q3 | Q4 | Q5 |
100 | 111 | 9999999999 | 2 | 1 | 4 | 3 | 2 |
100 | 222 | 8888888888 | 3 | 1 | 2 | 1 | 4 |
Я знаю, что мне нужно использовать кросс-таблицу / сводный запрос, чтобы получить это отображение. Для этого я попробовал это, основываясь на ограниченных знаниях, которые у меня есть об этом. Ниже мой запрос:
SELECT app_id, transaction_id, mobile_no,
(CASE node_id WHEN 1 THEN entered_value ELSE '' END) AS user_input1,
(CASE node_id WHEN 2 THEN entered_value ELSE '' END) AS user_input2,
(CASE node_id WHEN 3 THEN entered_value ELSE '' END) AS user_input3,
(CASE node_id WHEN 4 THEN entered_value ELSE '' END) AS user_input4,
(CASE node_id WHEN 5 THEN entered_value ELSE '' END) AS user_input5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no, node_id
И на основе этого запроса я получил следующий дисплей:
app_id transaction_id mobile_no user_input1 user_input2 user_input3 user_input4 user_input5
100 111 9999999999 2
100 111 9999999999 1
100 111 9999999999 4
100 111 9999999999 3
100 111 9999999999 2
100 222 8888888888 3
100 222 8888888888 1
100 222 8888888888 2
100 222 8888888888 1
100 222 8888888888 4
Может ли кто-нибудь помочь мне с правильными изменениями, которые мне нужно внести в мой запрос, чтобы получить записи в одну строку, а не в несколько строк, как указано выше.
Вопрос 2: Также есть способ получить значение определенного поля в качестве ИМЯ столбца. Как вы можете видеть выше, у меня есть,user_input1
user_input2
... в качестве заголовка. Вместо этого я хочу иметь значения вcustomer_attribute
в качестве заголовка столбцов.
Для этого я проверилNAME_CONST(name,value)
как показано ниже:
SELECT app_id, transaction_id, mobile_no,
NAME_CONST(customer_attribute, (CASE node_id WHEN 1 THEN entered_value ELSE '' END))
FROM trn_user_log
Но это дает ошибку
Error Code : 1210 Incorrect arguments to NAME_CONST
Требуется помощь.