MySQL使用旧表行中的列创建新表

时间:2017-06-16 13:05:55

标签: mysql

价格表的片段

stockid typeabbrev currabrev debtorno price branchcode startdate  enddate
AC100BL CL         USD                0.2200           2015-07-28 0000-00-00
AC100BL DE         USD                0.3500           2016-07-29 0000-00-00
AC100BL EX         USD                0.3500           2016-07-29 0000-00-00
AC100BL FL         USD                0.4000           2015-07-28 0000-00-00
AC100BL RT         USD                0.4700           2016-07-29 0000-00-00
AC100BL SP         USD                0.3100           2015-07-28 0000-00-00
AC100BL ST         USD                0.2400           2015-07-28 0000-00-00
AC100BL TR         USD                0.4200           2016-07-29 0000-00-00

所以,我有使用MySQL的经验,但这超出了我的范围。

您在上面看到的是我数据库中价格表的摘录。

现在每个不同的类型缩写都有一个stockid行。

我的问题是:我如何创建一个新表,其中每一行是不同的stockid,每行都有不同的typeabbrev作为每个stockid的字段。 所以新表最终会像这样:

stockid CL DE EX
AC100BL 0.2200 0.3500 0.3500          
BC19BLF 0.1100 0.1300 0.1400           
CC10GBL 0.3900 0.4900 0.3500           

很抱歉,如果我没有解释清楚。

基本上我想将stockid作为主键,并将字段作为所有现有字段加上其他类型字体的额外字段。

提前感谢您提供给我的任何建议。

1 个答案:

答案 0 :(得分:0)

您可以使用pivot查询来执行此操作,例如:

SELECT s.stockid,
 (SELECT price FROM table WHERE stockid = s.stockid AND typeabbrev = 'CL') AS 'CL',
 (SELECT price FROM table WHERE stockid = s.stockid AND typeabbrev = 'DE') AS 'DE',
 (SELECT price FROM table WHERE stockid = s.stockid AND typeabbrev = 'FX') AS 'FX'
FROM table;