SQL:更改具有一百万行的sql表的结构

时间:2015-06-13 12:27:49

标签: mysql pivot innodb

我有一个表格(让我们称之为mytable),结构如下。该表每天记录接近1百万行。

id      date      timestamp  licenseid   storeid    deviceid    value
1     2015-06-12   17:36:15   lic0001       1         0add      -52
2     2015-06-12   17:36:15   lic0002       1         0add      -54
3     2015-06-12   17:36:15   lic0003       1         0add      -53
4     2015-06-12   17:36:21   lic0001       1         0add      -54
5     2015-06-12   17:36:21   lic0002       1         0add      -59
6     2015-06-12   17:36:21   lic0003       1         0add      -62
7     2015-06-12   17:36:21   lic0004       1         0add      -55
8     2015-06-12   17:36:15   lic0001       1         0bdd      -53
9     2015-06-12   17:36:15   lic0002       1         0bdd      -52
10    2015-06-12   17:36:15   lic0003       1         0bdd      -52
11    2015-06-12   17:36:15   lic0004       1         0bdd      -50
12    2015-06-12   17:36:33   lic0002       1         0bdd      -54
13    2015-06-12   17:36:33   lic0003       1         0bdd      -54
14    2015-06-12   17:36:33   lic0004       1         0bdd      -55
15    2015-06-12   17:36:33   lic0005       1         0bdd      -40

我需要使用上面相同的数据,然后按照下面的结尾将其重新排列在新表格中。我应该使用什么SQL查询来获取以下输出并将其存储在名为' newtable'的新表中。考虑我的桌子大小。许可证的数量是可变的。

id   date      timestamp   deviceid  storeid  lic001  lic002   lic003   lic004  lic005.... 
1  2015-06-12   17:36:15     0add      1        -52     -54     -53     
2  2015-06-12   17:36:21     0add      1        -54     -59     -62     -55
3  2015-06-12   17:36:15     0bdd      1        -53     -52     -52     -50 
4  2015-06-12   17:36:33     0bdd      1                -54     -54     -55      -40

我需要这样做,以便为每个商店的每个时间戳执行每个deviceid的计算,并根据已知的等式和使用单独的许可证值,为每个值达到转换,最后为每个时间戳每个商店的每个设备ID提供一个唯一值。

0 个答案:

没有答案