读书人

请问一个特殊的行转列的有关问题初学

发布时间: 2012-01-05 22:36:54 作者: rapoo

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

读书人网 >oracle

热点推荐