表的格式如下:(数据乱编的)
ID PName PDate price Location
41928CF444764 高镁钢 2009-06-27 2160.000 石家庄
41928CF444764 高镁钢 2009-06-26 2160.000 石家庄
41928CF444764 高镁钢 2009-06-25 2160.000 石家庄
41928CF444764 高镁钢 2009-06-24 2160.000 石家庄
41928CF444764 高镁钢 2009-06-23 2160.000 石家庄
41928CF444764 高镁钢 2009-06-27 2330.000 成都
41928CF444764 高镁钢 2009-06-26 2330.000 成都
41928CF444764 高镁钢 2009-06-25 2330.000 成都
41928CF444764 高镁钢 2009-06-24 2330.000 成都
41928CF444764 高镁钢 2009-06-23 2330.000 成都
41928CF444764 高镁钢 2009-06-27 2320.000 南昌
41928CF444764 高镁钢 2009-06-26 2320.000 南昌
41928CF444764 高镁钢 2009-06-25 2320.000 南昌
41928CF444764 高镁钢 2009-06-24 2320.000 南昌
41928CF444764 高镁钢 2009-06-23 2320.000 南昌
3A80FEBCBF3C4 生锗钢 2009-06-27 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-26 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-25 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-24 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-23 2020.100 江苏
想要得到这样的格式,不知有没有办法一个语句完成?
ID PName PDate price Location
41928CF444764 高镁钢 2009-06-27 2160.000 石家庄
41928CF444764 高镁钢 2009-06-26 2160.000 石家庄
41928CF444764 高镁钢 2009-06-25 2160.000 石家庄
41928CF444764 高镁钢 2009-06-24 2160.000 石家庄
41928CF444764 高镁钢 2009-06-23 2160.000 石家庄
41928CF444764 高镁钢 2009-06-27 2330.000 成都
41928CF444764 高镁钢 2009-06-26 2330.000 成都
41928CF444764 高镁钢 2009-06-25 2330.000 成都
41928CF444764 高镁钢 2009-06-24 2330.000 成都
41928CF444764 高镁钢 2009-06-23 2330.000 成都
41928CF444764 高镁钢 2009-06-27 2320.000 南昌
41928CF444764 高镁钢 2009-06-26 2320.000 南昌
41928CF444764 高镁钢 2009-06-25 2320.000 南昌
41928CF444764 高镁钢 2009-06-24 2320.000 南昌
41928CF444764 高镁钢 2009-06-23 2320.000 南昌
3A80FEBCBF3C4 生锗钢 2009-06-27 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-26 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-25 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-24 2020.100 江苏
3A80FEBCBF3C4 生锗钢 2009-06-23 2020.100 江苏
想要得到这样的格式,不知有没有办法一个语句完成?
MySQL交叉表
+---------------+--------+------------+-------+----------+
| ID | PName | PDate | price | Location |
+---------------+--------+------------+-------+----------+
| 41928CF444764 | 高镁钢 | 2009-06-27 | 2160 | 石家庄 |
| 41928CF444764 | 高镁钢 | 2009-06-26 | 2160 | 石家庄 |
| 41928CF444764 | 高镁钢 | 2009-06-25 | 2160 | 石家庄 |
| 41928CF444764 | 高镁钢 | 2009-06-24 | 2160 | 石家庄 |
| 41928CF444764 | 高镁钢 | 2009-06-23 | 2160 | 石家庄 |
| 41928CF444764 | 高镁钢 | 2009-06-27 | 2330 | 成都 |
| 41928CF444764 | 高镁钢 | 2009-06-26 | 2330 | 成都 |
| 41928CF444764 | 高镁钢 | 2009-06-25 | 2330 | 成都 |
| 41928CF444764 | 高镁钢 | 2009-06-24 | 2330 | 成都 |
| 41928CF444764 | 高镁钢 | 2009-06-23 | 2330 | 成都 |
| 41928CF444764 | 高镁钢 | 2009-06-27 | 2320 | 南昌 |
| 41928CF444764 | 高镁钢 | 2009-06-26 | 2320 | 南昌 |
| 41928CF444764 | 高镁钢 | 2009-06-25 | 2320 | 南昌 |
| 41928CF444764 | 高镁钢 | 2009-06-24 | 2320 | 南昌 |
| 41928CF444764 | 高镁钢 | 2009-06-23 | 2320 | 南昌 |
| 3A80FEBCBF3C4 | 生锗钢 | 2009-06-27 | 2020 | 江苏 |
| 3A80FEBCBF3C4 | 生锗钢 | 2009-06-26 | 2020 | 江苏 |
| 3A80FEBCBF3C4 | 生锗钢 | 2009-06-25 | 2020 | 江苏 |
| 3A80FEBCBF3C4 | 生锗钢 | 2009-06-24 | 2020 | 江苏 |
| 3A80FEBCBF3C4 | 生锗钢 | 2009-06-23 | 2020 | 江苏 |
+---------------+--------+------------+-------+----------+
20 rows in set (0.00 sec)mysql>
mysql> select Location,
-> max(if(PDate=date_sub(curdate(), interval 7 day),price,0)) as D_7,
-> max(if(PDate=date_sub(curdate(), interval 6 day),price,0)) as D_6,
-> max(if(PDate=date_sub(curdate(), interval 5 day),price,0)) as D_5,
-> max(if(PDate=date_sub(curdate(), interval 4 day),price,0)) as D_4,
-> max(if(PDate=date_sub(curdate(), interval 3 day),price,0)) as D_3,
-> max(if(PDate=date_sub(curdate(), interval 2 day),price,0)) as D_2,
-> max(if(PDate=date_sub(curdate(), interval 1 day),price,0)) as D_1
-> from t_free212
-> where PName='高镁钢'
-> and PDate>=date_sub(curdate(), interval 7 day)
-> group by Location;
+----------+------+------+------+------+------+------+------+
| Location | D_7 | D_6 | D_5 | D_4 | D_3 | D_2 | D_1 |
+----------+------+------+------+------+------+------+------+
| 石家庄 | 2160 | 2160 | 2160 | 0 | 0 | 0 | 0 |
| 南昌 | 2320 | 2320 | 2320 | 0 | 0 | 0 | 0 |
| 成都 | 2330 | 2330 | 2330 | 0 | 0 | 0 | 0 |
+----------+------+------+------+------+------+------+------+
3 rows in set (0.06 sec)mysql>
标题也不用改,就是日期显示,我是用于打印在网页上面的,如<tr>/<td>排列下来像上面的数据:+----------+------+------+------+------+------+-
| Location | 6-23 | 6-24 | 6-25 | 6-26 | 6-27
+----------+------+------+------+------+------+-
| 石家庄 | 2160 | 2160 | 2160 | 2160 | 2160 |
| 南昌 | 2320 | 2320 | 2320 | 2320 | 2320 |
| 成都 | 2330 | 2330 | 2330 | 2330 | 2330 |
......是的,数据是一天一个地方只有一条。
如用于MSSQL的话你三楼的语句要改动那些?不知还有没有更简洁的方法,那一堆MAX看了就头大。