2015-11-05 24 views
0

我有MySQL的記錄數據量巨大,必須tranformed這樣的:MySQL的 - 提取日期時間和轉換爲矩陣映射

Datetime matrix mapping

我的問題是,如何提取日期時間值(月,周,小時)並將其插入到具有二進制值(0或1)的精確列中,如上圖所示。

問題解決了,我只是想出的最簡單的方法,這裏的例子:

UPDATE TABLE 
SET h1 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '1' THEN 1 
     ELSE '0' 
     END 
, h2 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '2' THEN '1' 
     ELSE '0' 
     END 
, h3 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '3' THEN '1' 
     ELSE '0' 
     END 
, h4 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '4' THEN '1' 
     ELSE '0' 
     END 
, h5 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '5' THEN '1' 
     ELSE '0' 
     END 
, h6 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '6' THEN '1' 
     ELSE '0' 
     END 
, h7 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '7' THEN '1' 
     ELSE '0' 
     END 
     ; 
+0

如何格式化當前表格?另外,你會發現這個很有用:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html –

+0

由於某種原因,它只是從具有大記錄的星型模式中反規格化表格我需要提取trx日期時間值並插入到確切的列中。例如: 如果datetime值是2015/10/08 17:31 那麼插入列H17 = 1 ELSE column = 0。 通常情況下,我提取日期時間值與此: SELECT EXTRACT(月/周/小時從Datetime_Column 或者 選擇月/周/小時(Datetime_Column)FROM表 是否與CASE插入日期時間提取值有道/中頻成多個列? – DziGear

回答

0

問題解決了,我只是想出的最簡單的方法,這裏的例子:

UPDATE TABLE 
SET h1 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '1' THEN 1 
     ELSE '0' 
     END 
, h2 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '2' THEN '1' 
     ELSE '0' 
     END 
, h3 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '3' THEN '1' 
     ELSE '0' 
     END 
, h4 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '4' THEN '1' 
     ELSE '0' 
     END 
, h5 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '5' THEN '1' 
     ELSE '0' 
     END 
, h6 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '6' THEN '1' 
     ELSE '0' 
     END 
, h7 = CASE WHEN (SELECT DAYOFWEEK (trx_datetime)) = '7' THEN '1' 
     ELSE '0' 
     END 
     ;