日期:2014-05-16 浏览次数:20544 次
这是我遇到的一个面试题: 已知各城市的每月收入总值, 写出sql语句,查出各地点的年收入总值。 ? ? -------------------------------------------------先回顾一下oracle的基本知识 set serveroutput on --打开输出 ? --先删除表,再创建表 begin ? execute immediate 'drop table t1'; ? exception when others then ? ? dbms_output.put_line('INFO not exit table t1'); end; create table t1 ( id number(4), area varchar2(10) not null, month date not null, income number(10,2) not null, constraint t1_pk primary key(id) ); ? --先删除序列,再创建序列 begin ? execute immediate 'drop sequence seq1'; ? exception when others then ? ? dbms_output.put_line('not exit sequence'); end; create sequence seq1 start with 1 increment by 1; ? --重置sequence初始值? declare ? n ? ? ?number(10); ? tsql ? varchar2(100); begin ? select ? seq1.nextval ? into ? n ? from ? dual; ? n:=-(n-1); ? tsql:= 'alter ? sequence ? seq1 ? increment ? by '|| ? n; ? execute ? immediate ? tsql; ? select ? seq1.nextval ? into ? n ? from ? dual; ? tsql:= 'alter ? sequence ? seq1 ? increment ? by ? 1 '; ? execute ? immediate ? tsql; end; ? ? insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy- mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1); insert into t1 values(seq1.nextval-1,'重庆',add