数据表
ID, YEAR, MONTH, Cost1, Cost2, Cost3, Cost4, Cost5
1   2013    1     20     10     55      88    9      
2   2013    2     1      2       3       4    5      
3   2013    3     2      2       2       2    2     查询结果
       1月     2月    3月   4月   5月   6月   7月   8月    9月  10月   11月  12月 
Cost1   20      1      2     0     0     0     0     0     0     0     0     0
Cost2   10      2      2     0     0     0     0     0     0     0     0     0
Cost3   55      3      2     0     0     0     0     0     0     0     0     0
Cost4   88      4      2     0     0     0     0     0     0     0     0     0
Cost5   9       5      2     0     0     0     0     0     0     0     0     0这种SQL语句怎么写?自觉得难度大

解决方案 »

  1.   

    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...
      

  2.   

    SELECT NAME,MAX(IF(MONTH=1,JE,0)) AS A1 ,MAX(IF(MONTH=2,JE,0)) AS A2,MAX(IF(MONTH=3,JE,0)) AS A3,MAX(IF(MONTH=4,JE,0)) AS A4
    ,MAX(IF(MONTH=5,JE,0)) AS A5 FROM (SELECT 'Cost1' AS NAME,Cost1 AS JE,MONTH FROM TTG
    UNION ALL
    SELECT 'Cost2' AS NAME,Cost2,MONTH FROM TTG
    UNION ALL
    SELECT 'Cost3' AS NAME,Cost3,MONTH FROM TTG
    UNION ALL
    SELECT 'Cost4' AS NAME,Cost4,MONTH FROM TTG
    UNION ALL
    SELECT 'Cost5' AS NAME,Cost5,MONTH FROM TTG) A
    GROUP BY NAME