我写的sql如下:select sum(c) from a where a.code between '1000' to '2000'
union all
select sum(c) from a where a.code between '2000'to '30000'
union all
select sum(c) from a where a.code between '3000'to '40000',这样结果是一列多行的,如何转成一行多列的格式,类似于excel里的转置功能,哪位高手支招,不胜感激!

解决方案 »

  1.   

    select (case a.code when between '1000' to '2000' then sum(c)),
    (case a.code when between '2000'to '30000' then sum(c)),
    (case a.code when between '3000'to '40000' then sum(c))
    from a;
      

  2.   

    select sum(case a.code when between '1000' to '2000' then c else 0 end), 
    sum(case a.code when between '2000'to '30000' then c else 0 end), 
    sum(case a.code when between '3000'to '40000' then c else 0 end)
    from a;
    上面写错了,汗啊
      

  3.   

    搂主问问题时可以先搜索google或百度,类似的功能有很多。
    以下提供一个:http://www.itpub.net/thread-1017026-1-1.html
      

  4.   

    不知道楼主用的是ORACLE的哪个版本,如果是8以下的,那就考虑用DEcode,如果8以上的就直接按上面的仁兄的就好:)
    如果想深入了解可以看下http://liangzihou.blog.163.com/blog/static/45979126200922423011627/
      

  5.   

    数据量不大的话可以考虑用自定义函数实现。
    把1000,2000这样的数据作为传入参数
    返回是一次出来的一个集合
    如:
    select function_test(1000,2000) num1,
           function_test(2000,3000) num2,
           function_test(3000,4000) num2,
    from dual函数体可以直接是:
    return (select sum(c) from a where a.code between v_num_1 to v_num2);