日期:2014-05-16  浏览次数:20595 次

ORACLE连接|周、DECODE以及树查询
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=******)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=******)(PORT=1521)))(LOAD_BALANCE=yes)(FAILOVER=ON)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME =**)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))))

select to_char(s.file_date,'yyyy-MM-IW') file_date,sum(s.num_count)  num_count
from sum_wf_serv_deal_hist s
where s.file_date>=to_date('2011-01-01','yyyy-MM-dd')
and s.file_date<to_date('2012-01-01','yyyy-MM-dd')
group by to_char(s.file_date,'yyyy-MM-IW')
order by to_char(s.file_date,'yyyy-MM-IW')

IW
是周算法以周别为“主线” ,每年最多可以有53个周B别,但是每年至少要包含52个周别;
如果一年当中第52周别之后至当年的12月31日之间,还有大于或等于4天的话,则定为当年的第53周,否则剩余这些天数被归为下一年的第1周;
如果在不足52周别的话,则以下一年的时间来补;
每周固定的从周一开始作为本周的第1天,到周日作为本周的第7天;
比如:在Oracle中 2011/01/01 依然属于IW周别 2010年的第52周的第6天

DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

SELECT DECODE(TO_CHAR(to_date('20100801','yymmdd'), 'day'),'星期一',
TO_NUMBER(TO_CHAR(to_date('20100801','yymmdd'), 'W')) ,
TO_NUMBER(TO_CHAR(to_date('20100801','yymmdd'), 'W'))+1)
  FROM DUAL;

select * from ts
where ts.ts_code <>'6'
start with ts.ts_code='6'
connect by prior ts.ts_code=ts.super_code;