我在页面上 如果输入2007 年上半年,然后对数据库进行查询 ,
数据库的基本结构是这样的
NAME    SYSDATE   VALUE  CD1   CD2
...       ...      ...   ...   ...
 
查询条件是 (SYSDATE>=2005/12 AND SYSDATE<=2006/05)  OR 
           (SYSDATE>=2006/12 AND SYSDATE<=2007/05  )
而且,CD1=CD2的时候, 每个月份对应的值为value,不等的时候为'Null'查询结果是这样的:(按照name 分组)
           12月   1月   2月   3月   4月  5月      
      05   value   ...
      06    null   ...    谢谢大家了,大家一起集思广益吧!

解决方案 »

  1.   

    TRY:
    SELECT NAME,SUM(DECODE(TO_CHAR(COLDATE,'MM'),'01',COLVAL,NULL) '1月',
    SUM(DECODE(TO_CHAR(COLDATE,'MM'),'02',COLVAL,NULL) '2月',
    ...
    FROM (SELECT NAME ,COLDATE,DECODE(SIGN(CD1-CD2),0,VALUE,NULL) AS COLVAL FROM TBNAME) T GROUP BY NAME;
      

  2.   

    谢谢啦!还想问一下,为什么这种行转列的程序为什么都要加上sum,max 之类的函数呢,在这里把sum换成max 有区别吗?谢谢!
      

  3.   

    加上MAX是选出最全的行来,你不加MAX试试就知道了