2015-02-23 7 views
0

У меня есть таблица1, где я изо всех сил пытаюсь получить вывод как table2. Есть идеи ?MYSQL разделяет значения на несколько столбцов на основе строки столбца

Table1

+-----+-----------+------+----------+---------------------+ 
| id | Sensor | Temp | Humidity | DateTime   | 
+-----+-----------+------+----------+---------------------+ 
| 1 | Sens1  | 9.7 |  55 | 2015-02-21 11:29:47 | 
| 2 | Sens2  | 4.4 |  99 | 2015-02-21 11:45:00 | 
| 3 | Sens1  | 9.8 |  56 | 2015-02-21 11:44:59 | 
| 4 | Sens2  | 4.5 |  98 | 2015-02-21 11:59:24 | 
+-----+-----------+------+----------+---------------------+ 

выход хотел: TABLE2

+---------------------+-----------+----------+-----------+----------+ 
| Datetime   | Sens1temp | Sens1hum | Sens2temp | Sens2hum | 
+---------------------+-----------+----------+-----------+----------+ 
| 2015-02-21 11:29:47 |  9.7 |  55 | null | null | 
| 2015-02-21 11:45:00 |  null |  null |  4.4 |  99 | 
| 2015-02-21 11:44:59 |  9.8 |  56 | null | null | 
| 2015-02-21 11:59:24 |  null |  null |  4.5 |  98 | 
+---------------------+-----------+----------+----------+-----------+ 

Я потратил часы на поиски, но просто не могу заставить его работать.

ответ

1

Попробуйте это:

SELECT Datetime, 
     CASE WHEN Sensor='Sens1' THEN Temp END AS Sens1temp, 
     CASE WHEN Sensor='Sens1' THEN Humidity END AS Sens1hum, 
     CASE WHEN Sensor='Sens2' THEN Temp END AS Sens2temp, 
     CASE WHEN Sensor='Sens2' THEN Humidity END AS Sens2hum 
FROM TableName 
GROUP BY Datetime 

Пример результата в SQL Fiddle.

+1

здесь не нужно МАКСИМАЛЬНО :) CASE достаточно imho – Alex

+0

@Alex: Да! правильно! обновил мой ответ. –

Смежные вопросы