日期:2014-05-17  浏览次数:20662 次

请教一个特殊的行转列的问题,初学数据库就剩40分了!
我在页面上   如果输入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       ...        

谢谢大家了,大家一起集思广益吧!

------解决方案--------------------
输入参数是什么尼?07年上半年?有没有可能07年一年?
------解决方案--------------------
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;
------解决方案--------------------
加上MAX是选出最全的行来,你不加MAX试试就知道了