Исходная таблица:
customer_id |заказ_А |order_B |order_C |order_D
1 | 1 | 0 | 0 | 1 |
2 | 0 | 1 | 0 | 1 |
3 | 1 | 1 | 0 | 1 |
4 | 0 | 0 | 0 | 1 |
Требуемый вывод:
customer_id |order_type |
1 | A |
1 | D |
2 | B |
2 | D |
3 | A |
3 | B |
3 | D |
4 | D |
Первоначально мой вопрос был помечен как дубликат, и меня попросили указать следующий вопрос: Сводная таблица MySQL
Я сослался на него и также взялпомогите http://archive.oreilly.com/oreillyschool/courses/dba1/ придумать следующий код:
select customer_id,
case when order_A=1 then 'A' end as order_type
from tb1 having order_type is not null
Union all
select customer_id,
case when order_B=1 then 'B' end as order_type
from tb1 having order_type is not null
Union all
select customer_id,
case when order_C=1 then 'C' end as order_type
from tb1 having order_type is not null
Union all
select customer_id,
case when order_D=1 then 'D' end as order_type
from tb1 having order_type is not null order by customer_id,order_type;
Этот код действительно дает мне требуемый вывод, но мне было интересно, есть ли лучший способ / подход к этому вопросу.
Кроме того, было бы очень полезно, если бы кто-то мог помочь предложить веб-сайт / книги, где я могу практиковать такой вопрос для интервью.