请编写sql多语句表值函数统,计指定年份中每本书的销售总额
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多语句表值函数统,计指定年份中每本书的销售总额的更多相关文章
- 应用C#和SQLCLR编写SQL Server用户定义函数
摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...
- GJM :Sql 各种语句 以及函数 [转载]
版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种 ...
- SQL各种语句、函数
1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种查询语句的使用示例 4.模糊查询的语句 5.排序语句.排序并查前三名的语句 聚合函数:sum,avg,ma ...
- 【SQL】分享表值函数FMakeRows,用于生成行
------------更新:201501071730------------ 评论中又有一位[笑东风]兄给出改善建议,在此先感谢他.原理是借助行数较多的一个系统视图sys.all_columns与自 ...
- 编写sql查询语句思路
编写查询语句思路/* 1.首先确定最终输出结果的列,包括几个方面:A.首先这些列来自于一个 表.还是多个表,如果是多个表则可能用到多表查询的(等值连接.不等值 连接.外连接.自连接):B.这些列是直接 ...
- SQL常用语句和函数
从一个表中选取数据插入到另一个表中: select column_name(s) into new_table_name from old_table_name --new_table_name表不必 ...
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用
由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...
- SQL Server--用户自定义函数
除了使用系统提供的函数外,用户还可以根据需要自定义函数.用户自定义函数是 SQL Server 2000 新增的数据库对象,是 SQL Server 的一大改进.与编程语言中的函数类似,Microso ...
- sql 表值函数与标量值函数
写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量 ...
随机推荐
- 认识JavaScript中Let和Var的区别
本文转载自:https://www.cnblogs.com/songzxblog/p/11137117.html
- unity physics相关
1. With careful positioning and sizing, compound colliders can often approximate the shape of an obj ...
- Java中构建长字符串的四种模式
回字有四种写法,构建字符串也有四种方式. 用+号最快,第二第三种可读性好,第四种是log4j自有的.下面请见代码: package logbackCfg; import java.text.Messa ...
- Java中String.strip()和String.trim()方法
strip和trim String.trim() 可以去除字符串前后的"半角"空白字符 String.strip() 可以去除字符串前后的"全角和半角"空白字符 ...
- odoo10甘特图gantt view
odoo10中的gantt图示例 1.Gantt属性说明 甘特图视图的根元素是<gantt />,它没有子节点但可以采用以下属性: date_start (required) 提供每条记录 ...
- Linux:正则表达式1
正则表达式是以行为单位对字符串进行处理. 1.^ 以xxx开头=>比如在过滤出当前目录下的文件夹.发现文件夹都是以d开头的,那么这个命令就可以这么写 ls -l | grep ^d 过滤出以 ...
- golang开发:CSP-WaitGroup Mutex
CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,最初于Tony Hoare的1977年的论文中被描述,影响了许多编程 ...
- Git切换分支开发
入职第一家公司做开发的时候使用的项目版本管理工具是svn,公司内部搭建的服务器:在第二.第三家公司做开发的时候,使用的项目版本管理工具是Git,现在大多数公司使用的也是Git.刚进入公司的时候首先做的 ...
- 常见重构技巧 - 5种方式去除多余的if else
常见重构技巧 - 去除多余的if else 最为常见的是代码中使用很多的if/else,或者switch/case:如何重构呢?方法特别多,本文带你学习其中的技巧. 常见重构技巧 - 去除多余的if ...
- 【译】Visual Studio 2019 的 Local Process with Kubernetes
今天,我们自豪地宣布 Local Process with Kubernetes 的预览版已加入到 Visual Studio 2019 16.7 Preview 2 中. Local Proces ...