我感覺你應(yīng)該是不知道怎么寫每月和每年吧。其實很簡單,把你下次時間的字符串拿出來看下就行。下面是代碼。
站在用戶的角度思考問題,與客戶深入溝通,找到青海網(wǎng)站設(shè)計與青海網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋青海地區(qū)。
DECLARE
I4 INTEGER;I5 INTEGER;
BEGIN
--每月5號中午12點
DBMS_JOB.SUBMIT(I4,'YOUR PROC;',SYSDATE,'TRUNC(SYSDATE, ''MM'') + 4 + 12 / 24');
--每年1月10號中午12點
DBMS_JOB.SUBMIT(I5,'YOUR PROC;',SYSDATE,'TRUNC(SYSDATE, 'Y') + 9 + 12 / 24');
COMMIT;
END;
第一步:創(chuàng)建表
--支出表??
create?table?PAY??
(??
ID???????NUMBER(11)?not?null,??
PAY_NAME?VARCHAR2(100),??
AUTHOR???VARCHAR2(100),??
TYPE_ID??NUMBER(11),??
PRICE????FLOAT,?--金額??
BRIEF????VARCHAR2(1000),??
USERID???NUMBER(11),?--用戶ID??
TIMES????DATE,?--時間??
PRIMARY?KEY(ID)??
)
第二步:插入數(shù)據(jù)
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(1,?'1',?'1',?0,?1,?'1',?1,?to_date('12-10-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(0,?'3',?'3',?1,?3,?'3',?1,?to_date('12-10-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(2,?'2',?'2',?1,?2,?'2343444',?1,?to_date('12-10-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(6,?'6',?'1',?0,?4000,?'1',?1,?to_date('12-08-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(5,?'5',?'1',?0,?1,?'1',?1,?to_date('12-10-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(4,?'4',?'1',?0,?100,?'1',?1,?to_date('12-09-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(7,?'4',?'1',?0,?566,?'1',?1,?to_date('03-03-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(11,?'4',?'1',?0,?566,?'1',?1,?to_date('03-04-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(10,?'4',?'1',?0,?566,?'1',?1,?to_date('03-05-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(9,?'4',?'1',?0,?566,?'1',?1,?to_date('03-06-2012',?'dd-mm-yyyy'));??
insert?into?PAY?(ID,?PAY_NAME,?AUTHOR,?TYPE_ID,?PRICE,?BRIEF,?USERID,?TIMES)??
values?(8,?'4',?'1',?0,?566,?'1',?1,?to_date('03-07-2012',?'dd-mm-yyyy'));??
commit;
第三步:執(zhí)行分組查詢
SELECT?SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?1,?B.PRICE,?0))?AS?A,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?2,?B.PRICE,?0))?AS?B,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?3,?B.PRICE,?0))?AS?C,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?4,?B.PRICE,?0))?AS?D,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?5,?B.PRICE,?0))?AS?E,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?6,?B.PRICE,?0))?AS?F,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?7,?B.PRICE,?0))?AS?G,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?8,?B.PRICE,?0))?AS?H,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?9,?B.PRICE,?0))?AS?I,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?10,?B.PRICE,?0))?AS?J,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?11,?B.PRICE,?0))?AS?K,??
SUM(DECODE(EXTRACT(MONTH?FROM?B.TIMES),?12,?B.PRICE,?0))?AS?L??
FROM?PAY?B??
WHERE?USERID?=?1??
AND?EXTRACT(YEAR?FROM?B.TIMES)?=?'2012'
第四步:輸出結(jié)果
寫一個存儲過程放JOB里,每天24點定時跑,如果生日當天,就自動增加年齡。
begin dbms_scheduler.create_job(job_name = 'scan_table', job_type = 'STORED_PROCEDURE', job_action = 'sp_scan_table', --自定義的掃描表存儲過程 start_date = to_timestamp('20150827 00:00:00', 'yyyymmdd hh24:mi:ss'), repeat_in...
用job,具體用法:
declare
n_job binary_integer;
begin
dbms_job.submit(n_job, '你要執(zhí)行的東西', sysdate, TRUNC(LAST_DAY(SYSDATE))+4+2/24);
end;
-- 每月4號執(zhí)行
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+4+2/24');
-- 每分鐘執(zhí)行一次
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'TRUNC(sysdate,’mi’) + 1 / (24*60)');
-- 凌晨兩點執(zhí)行
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'TRUNC(sysdate) + 1 + 2/24');
-- 每周一凌晨2點執(zhí)行 周一是每周的第二天next_day(sysdate,2)同理周二是第三天,next_day(sysdate,3)
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'TRUNC(next_day(sysdate,2))+2/24');
-- 每月1日凌晨兩點執(zhí)行
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+1+2/24');
-- 每季第一天凌晨兩點執(zhí)行
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24');
-- 每年7月1日和1月1日凌晨2點
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate,'ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24');
-- 每年1月1日凌晨2點執(zhí)行
dbms_job.submit(n_job_01,'你調(diào)的東西',sysdate, 'Add_months(trunc(sysdate,'yyyy'), 12) +2/24');
htlx htje year
按合同類型 和年度分組
select htlx,year ,sum(htje) from table group by htlx year