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

admin2016-04-27  23

问题 设在SQL Server 2008某数据库中有商品表和销售表,两个表的定义如下:
  CREATE TABLE商品表(
  商品号char(10)PRIMARY KEY,
  商品各varchar(40),
  类别varchar(20),
  进货单价int)
  CREATE TABLE销售表(
  商品号char(10)REFERENCES商品表(商品号),
  销售时间datetime,
  销售数量int,
  销售单价int,
  PRIMARY KEY(商品号,销售时间))
  现要创建一个存储过程:查询指定类别的每种商品去年的累计销售总数量。请补全下列代码。
  CREATE PROC p_TotalSales
  @lb varchar(20)
  AS
  SELECT t1.商品号,商品名,_______AS销售总数量
  FROM商品表t1 JOIN销售表t2
  ON t1.商品号=_______
  WHERE year(销售时间)=year(_______(year,-1,getdate()))
  and类别=@lb
_______t1.商品号,商品名

选项

答案第一空:SUM(销售数量) 第二空:t2.商品号 第三空:DATEADD 第四空:Group by

解析 整个SELECT语句的含义是:根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列的表达式,选出元组中的属性值形成结果表。
    题目中要求求商品的销售总量,又根据“AS销售总数量"语句知,第1空应使用SUM()函数,即SUM(销售数量)。
    从JOIN……ON语句知道,该空是两表相连接语句,连接的属性列为各表的主码,故第2空应填写t2.商品号。
    DATEADD()函数在日期中添加或减去指定的时间间隔,基本语法DATEADD(datepart,number,date),date参数是合法的日期表达式;number是希望添加的间隔数,对于未来的时间,此数是正数,对于过去的时间,此数是负数。本题中查询的是去年的累计销售总数量,故第3空填写DATEADD。
    题目查询指定类别的商品,因此第4空是按商品号、商品名分组,故填写Group by。
转载请注明原文地址:https://kaotiyun.com/show/PBlZ777K
0

最新回复(0)