现在表的数据如下图:想把上图的每一个时间 2015-10-10 、2015-10-11、2015-10-12、。 变成列名
按照shop_id分组,每行一个shop_idSELECT
user_pay_count.shop_id,
MAX(CASE user_pay_count.time_stamp WHEN '2016-10-30' THEN user_pay_count.count ELSE 0 END) 2016-10-30
MAX(CASE user_pay_count.time_stamp WHEN '2016-10-31' THEN user_pay_count.count ELSE 0 END) 2016-10-31
FROM
user_pay_count
GROUP BY user_pay_count.shop_id[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2016-10-30
MAX(CASE user_pay_count.time_stamp WHEN '2016-10-31' THEN user_pay_c' at line 3请问该怎么写,自动执行,生成从2015-06-26 至2016-10-31 这 493天,493列数据

解决方案 »

  1.   

    利用 SUM(IF())  生成列, 效果不错,但是怎么自动执行呢?SELECT
    user_pay_count.shop_id,SUM(IF(user_pay_count.time_stamp="2016-10-26",user_pay_count.count,0)) AS "2016-10-26",
    SUM(IF(user_pay_count.time_stamp="2016-10-27",user_pay_count.count,0)) AS "2016-10-27",
    SUM(IF(user_pay_count.time_stamp="2016-10-28",user_pay_count.count,0)) AS "2016-10-28",
    SUM(IF(user_pay_count.time_stamp="2016-10-29",user_pay_count.count,0)) AS "2016-10-29",
    SUM(IF(user_pay_count.time_stamp="2016-10-30",user_pay_count.count,0)) AS "2016-10-30",
    SUM(IF(user_pay_count.time_stamp="2016-10-31",user_pay_count.count,0)) AS "2016-10-31"FROM
    user_pay_count
    GROUP BY
    user_pay_count.shop_id
      

  2.   

    使用动态SQL来实现  参考之处SET @a='';
    SELECT @a:=CONCAT(@a,'SUM(IF(user_pay_count.time_stamp=\'',user_pay_count.time_stamp,'\'',',user_pay_count.count,0)) AS ',user_pay_count.time_stamp,',')
    FROM
    user_pay_count
    GROUP BY
    user_pay_count.shop_id;PREPARE stmt2 FROM @a;
    EXECUTE stmt2;
    运行信息:
    [SQL]SET @a='';
    受影响的行: 0
    时间: 0.000s[SQL]
    SELECT @a:=CONCAT(@a,'SUM(IF(user_pay_count.time_stamp=\'',user_pay_count.time_stamp,'\'',',user_pay_count.count,0)) AS ',user_pay_count.time_stamp,',')
    FROM
    user_pay_count
    GROUP BY
    user_pay_count.shop_id;
    受影响的行: 0
    时间: 29.210s[SQL]PREPARE stmt2 FROM @a;
    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1结果:
    并没有达到效果,请问该怎么修改SQL语句
      

  3.   


    http://blog.csdn.net/acmain_chm/article/details/4283943MySQL交叉表
    在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx(  id int primary key,  c1 c...