请教一个特殊的行转列的问题,初学数据库就剩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试试就知道了