设在SQL Server2008某数据库中有商品表和销售表,两个表的定义如下: CREATE TABLE商品表( 商品号char(10) PRIMARY KEY, 商品名varchar(40), 类别varchar(20), 进货单价int); CREAT

admin2020-05-25  189

问题 设在SQL Server2008某数据库中有商品表和销售表,两个表的定义如下:
CREATE TABLE商品表(
商品号char(10) PRIMARY KEY,
商品名varchar(40),
类别varchar(20),
进货单价int);
CREATETABLE销售表(
商品号char(10)REFERENCES商品表(商品号),
销售时间datetime,
销售数量int,
销售单价int,
PRIMARYKEY(商品号,销售时间));
现要创建一个存储过程:查询指定类别的每种商品当前年销售总金额(销售总金额=销售
单价 * 销售数量)。请补全下列代码。
C REATEPROC p_TotalProfit
@lb varchar(20)
AS
SELECT商品名,(SELECT【1】FROM销售表t1 WHERE【2】and【3】=year(Getdate()))
AS销售总金额FROM商品表t2 WHERE【4】

选项

答案销售单价 * SUM(销售数量);t1.商品号=t2.商品号;t1.销售时间;t2.类别=@1b

解析 ①整个Select语句的含义是:根据where子句的条件表达式,从From子句指定的基本表或视图中找出满足条件的元组,再按select子句中的目标列表达式,选出元组中的属性值形成结果表。
②该题中(SELECT FROM销售表t1 WHERE and=year(Getdate()))是个嵌套,别名叫做销售总金额。
③语句执行过程:
·先从商品表中按照第二个Where形成一个初步查询结果。由于只有商品表中有类别,因此可知第四空填写:t2.类别=@1b(t2是商品表的别名,t1是销售表的别名)。由此可知该步是按给定类别查询。
·销售总金额语句就应该在第一部的基础上求某年的总额。因此可以推断第三空是获得销售时间语句。因此该空填写t1.销售时间。由于是在第一步基础上的查询,所以应该实行连表查询,第二空应该填写连接的条件,即t1.商品号=t2.商品号。
·第一空应该是求总额的语句。销售总金额=销售单价 * 销售数量,即销售单价 * SUM(销售数量)。
转载请注明原文地址:https://kaotiyun.com/show/ZzID777K
0

相关试题推荐
最新回复(0)