Результирующие наборы с переменным числом столбцов, как правило, плохая идея, однако, если вы действительно хотите сделать это, вы можете использовать комбинацию GROUP BY
, MAX
и IF
:
CREATE VIEW yourview AS
SELECT
date,
MAX(IF(name = 'm1', status, NULL)) m1,
MAX(IF(name = 'm2', status, NULL)) m2,
MAX(IF(name = 'm3', status, NULL)) m3
FROM yourtable
GROUP BY date;
Представление предоставит вам эти данные, как вы хотели:
date m1 m2 m3
2011-01-01 online offline online
2011-01-02 offline offline online
Обратите внимание, что создать невозможнопредставление с переменным числом столбцов, поэтому вам придется заново создавать представление при каждом изменении количества столбцов.