create table 图书表( 书号 varchar(50), 书名 varchar(50), 单价 int ) create table 销售表( 书号 varchar(50), 销售时间 datetime, 销售数量 int ) alter table 图书表 alter column 书号 varchar(50) not null; alter table 图书表 add constraint pk_tushubiao_shuhao primary key (书号) ; alter table 销售表 add constraint fk_xiaoshoubiao_shuhao foreign key (书号) references 图书表(书号); insert into 图书表 values('b001', '平凡的世界', 50); insert into 图书表 values('b002', '血色浪漫', 60); insert into 图书表 values('b003', '蓝色生死恋', 30); insert into 销售表 values('b001', '2012/03/15', 10); insert into 销售表 values('b001', '2012/03/16 2:30:15', 10); insert into 销售表 values('b001', '2013/08/16 22:10:37', 10); insert into 销售表 values('b002', '2013/03/25 22:10:37', 10); insert into 销售表 values('b002', '2013/01/16 22:10:37', 13); insert into 销售表 values('b002', '2012/08/16 10:20:55', 28); insert into 销售表 values('b003', '2012/07/15 20:56:27', 33); insert into 销售表 values('b003', '2012/12/6 21:33:59', 66); select a.书名, 单价, 销售数量, 销售时间 from 图书表 a, 销售表 b where a.书号=b.书号 and YEAR(销售时间) = '2012'; select a.书名, sum(单价*销售数量) as 销售总额 from 图书表 a, 销售表 b where a.书号=b.书号 and YEAR(销售时间) = '2012' group by a.书名; create procedure sp_BookProfit @year integer as begin select a.书名, sum(单价*销售数量) as 销售总额 from 图书表 a, 销售表 b where a.书号=b.书号 and YEAR(销售时间) = @year group by a.书名; end exec sp_BookProfit 2012;
create function f_BookProfit (@year integer) returns @f_BookProfit table(书名 varchar(80), 销售总额 integer) as begin insert into @f_BookProfit select a.书名, sum(单价*销售数量) as 销售总额 from 图书表 a, 销售表 b where a.书号=b.书号 and YEAR(销售时间) = @year group by a.书名; return; end select * from dbo.f_BookProfit(2012);