年度   季度   销量
1991    1      20
1991    2      79
1991    3      60
1991    4      68
1992    1      56
1992    2      54用一个sql语句查询成这样的结果年份 1季度   2季度  3季度  4季度
1991   20      79     60     68
1992   56      54 

解决方案 »

  1.   

    select 年度 as 年份,
    sum(if(季度=1,销量,0)) as 1季度,
    sum(if(季度=2,销量,0)) as 2季度,
    sum(if(季度=3,销量,0)) as 3季度,
    sum(if(季度=4,销量,0)) as 4季度
    from test
    group by 年度
      

  2.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    如果去掉 group by 年度
    结果是这样?
    年份 1季度 2季度 3季度 4季度
    1991 20    0     0    0
    1991 0    79     0    0
    1991 0     0     60   0
    1991 0     0     0    68
    1992 56    0     0    0
    1992 0     54    0    0
      

  4.   

    不好意思,刚才忘记带sum()了
    不过加上sum后为什么查出来的结果是20.0000000000就是后面带了好多000000000000
      

  5.   


       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  6.   

    不好意思,表的字段类型被定义为varchar(255)了,我该为int(11)就好了。谢谢,我刚才结帐,但是系统说我的分不够,不能结帐,我没有那么多分,不好意思,你看我该怎么结帐啊
      

  7.   

    8、如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖
    8、如何给分和结贴?a.点击帖子左上方的“结贴去...”按钮,到达结贴页面。根据用户回答情况来分配帖子的可用分,得分填写到每一楼后的得分框中,分配完毕后,点击左上方 (或左下方)的“确认结贴”,完成结贴。结贴完成后,系统将返回帖主该帖50%的可用分。b.如果没有满意的答案,可以直接选择无满意结贴 。无满意结贴时,帖子的可用分由系统收回,且没有任何可用分返回给帖主。
    --------------------------------------------------------------------------------
      

  8.   

    TRANSFORM SUM(NZ(销量,0))
    SELECT 年度 FROM TT GROUP BY 年度
    PIVOT 季度 IN(1,2,3,4)
      

  9.   

    能解释一下吗?
    TRANSFORM SUM(NZ(销量,0))
    SELECT 年度 FROM TT GROUP BY 年度
    PIVOT 季度 IN(1,2,3,4)没用过 transform  pivot 关键字