0

非常に単純なクエリがありますSELECT TIME, VALUE, TYPE from mylog

私のクエリは次を示しています:

| TIME            | VALUE |      TYPE |
 -------------------------------------
| 2013-09-26 04:45|  18.7 |         1 |
| 2013-09-26 04:45|  84.5 |         2 |
| 2013-09-26 05:00|  18.6 |         1 |
| 2013-09-26 05:00|  84.7 |         2 |

しかし、次のクエリを表示したい:

| TIME            | VALUE A |  VALUE B  |  
 ----------------------------------------
| 2013-09-26 04:45|  18.7   |  85.5     |  
| 2013-09-26 05:00|  18.6   |  84.7     |  

どこにいてどこにVALUE AいるType = 1VALUE BType = 2

すべてのデータは 1 つのテーブルに格納され、次の列が含まれます。

TIME, VALUE, TYPE
4

2 に答える 2

1
SELECT TIME,
MIN(CASE WHEN TYPE= '1' THEN VALUE ELSE NULL END)   AS VALUE_A,
MIN(CASE WHEN TYPE= '2' THEN VALUE ELSE NULL END)   AS VALUE_B From mylog GROUP BY time

SQLフィドル

于 2013-10-27T18:12:06.077 に答える
1
SELECT
  `TIME`,
  MIN(IF(`TYPE`=1,`VALUE`,99999999)) AS `Value A`,
  MIN(IF(`TYPE`=2,`VALUE`,99999999)) AS `Value B`
FROM mylog
GROUP BY `TIME`

「利用可能な値があり99999999ません」というメッセージが表示されます

編集

MIN(または)を拒否するため、NULL は使用しませんMAX。代わりに NULL が必要な場合は、これをラップする必要があります

SELECT `TIME`, 
  IF(`Value A`=99999999,NULL,`Value A`),
  IF(`Value B`=99999999,NULL,`Value B`)
FROM (
   -- ...
) AS baseview
于 2013-10-27T18:13:10.893 に答える