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);

请编写sql多语句表值函数统,计指定年份中每本书的销售总额的更多相关文章

  1. 应用C#和SQLCLR编写SQL Server用户定义函数

    摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...

  2. GJM :Sql 各种语句 以及函数 [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种 ...

  3. SQL各种语句、函数

    1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种查询语句的使用示例 4.模糊查询的语句 5.排序语句.排序并查前三名的语句 聚合函数:sum,avg,ma ...

  4. 【SQL】分享表值函数FMakeRows,用于生成行

    ------------更新:201501071730------------ 评论中又有一位[笑东风]兄给出改善建议,在此先感谢他.原理是借助行数较多的一个系统视图sys.all_columns与自 ...

  5. 编写sql查询语句思路

    编写查询语句思路/* 1.首先确定最终输出结果的列,包括几个方面:A.首先这些列来自于一个 表.还是多个表,如果是多个表则可能用到多表查询的(等值连接.不等值 连接.外连接.自连接):B.这些列是直接 ...

  6. SQL常用语句和函数

    从一个表中选取数据插入到另一个表中: select column_name(s) into new_table_name from old_table_name --new_table_name表不必 ...

  7. SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

    由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...

  8. SQL Server--用户自定义函数

    除了使用系统提供的函数外,用户还可以根据需要自定义函数.用户自定义函数是 SQL Server 2000 新增的数据库对象,是 SQL Server 的一大改进.与编程语言中的函数类似,Microso ...

  9. sql 表值函数与标量值函数

    写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量 ...

随机推荐

  1. 把Autofac玩的和javaSpring一样6

    大家好,今天来介绍我开源的一个autofac.Annotation项目 源码:https://github.com/yuzd/Autofac.Annotation 本项目是autofa的一个扩展组件, ...

  2. MySQL 字符类型

    字符类型 MySQL提供了多种关于字符存储的类型,但是在大多数情况下我们只使用char和varchar即可 类型 大小 用途 CHAR 0-255字节 定长字符串 VARCHAR 0-65535 字节 ...

  3. vue刷新数组

    困扰我两天的问题被一行代码解决了!!! 最近在做某个功能时用到了v-for,页面内容都是根据父页面传递过来的数组生成的,但是当我改变数组内容时页面不会跟着改变.这个问题足足困扰了我两天时间,最终下面的 ...

  4. 557反转字符串中的单词III

    class Solution: # 定义一个反转字符串的函数. def str_rever(self,s): length = len(s) s1 = '' for index in range(le ...

  5. 阿里Java中级开发测试相关试题及答案

    ------------恢复内容开始------------ 1.JSP文件上传的HTML标签代码定义是? A. <input type="text" name=" ...

  6. 【转】Android截屏

     http://blog.csdn.net/xww810319/article/details/17607749 Android截屏浅析 链接:http://blog.sina.com.cn/s/bl ...

  7. RedisTemplate: Failed to deserialize payload

    问题 org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exce ...

  8. chrome设置跨域访问

    1.新建目录 /usr/local/opt/myChromData 2.输入命令行 open -n /Applications/Google\ Chrome.app/ --args --disable ...

  9. 实战解读丨Linux下实现高并发socket最大连接数的配置方法

    摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...

  10. C++——自然数求和

    代码如下: #include <iostream> using namespace std; int main() { int a,sum=; for(int i=;i<=;i++) ...