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

admin2017-06-27  9

问题 设在SQL Server 2008某数据库中有商品表和销售表,表的定义如下:
  CREATE TABLE商品表(
  商品号char(10)PRIMARY KEY,
  商品名char(20),
  类别char(10),
  进货单价int)
  CREATE TABLE销售表(
  商品号char(10),
  销售时间datetime,
  销售数量int,
  销售单价int,
  PRIMARY KEY(商品号,销售时间),
  FOREIGN KEY(商品号)REFERENCES商品表(商品号))
  现要创建一个具有如下功能的存储过程:查询指定类别的每个商品的商品号和销售总利润,包括没有被销售过的商品(未被销售过的商品的利润为0)。请补全下列代码。
  CREATE【1】p_Profit@lb char(10)
  AS
  SELECT商品表.商品号,
  CASE
  WHEN销售表.商品号【2】THEN 0
  ELSE 【3】((销售单价一进货单价)*数量)
  END AS销售总利润
  FROM商品表【4】JOIN销售表ON商品表.商品号=销售表.商品号
  WHERE类别=【5】
  GROUP BY 【6】

选项

答案【1】PROC或PROCEDURE 【2】IS NULL 【3】SUM 【4】OUTER 【5】@lb 【6】商品表.商品号

解析 本题考查的是存储过程的使用。创建存储过程的语法:
    CREATE{PROC|PROCEDURE}存储过程名[{@存储过程参数参数类型]}[=默认
值][OUT|OUTPUT]
    AS
    SQL语句
对比语法可知【1】处应填写:PROC或PROCEDURE。
    在数据库中未被销售的产品是空的,用NULL标识。题目要求“未被销售过的商品的利润为0”表示,在存储过程中,【2】后面有0,可以推断出【2】处作用是用来处理“未被销售过的商品的利润为0”功能的。根据语法规则【2】处应填写:IS NULL。   
题目要求是求商品的总利润,SQL语句中求和是SUM()函数,因此【3】处应该填写:SUM。
    内联接(INNER JOIN):主表和从表都存在的记录才会查出来;外联接(OUTER JOIN)如果主表中存在的记录,从表中不存在则用NULL替代,根据题目特点,外链接符合题目要求,故【4】处应填写:OUTER。
    题目要求是指定的商品类别,因此商品类别需要通过变量输入,故【5】处应填写:@lb。
    题目要求是“查询指定类别的每个商品的商品号”,因此分组的依据应该是商品表中的商品号,故【6】处应填写:商品表.商品号。
转载请注明原文地址:https://jikaoti.com/ti/9q37FFFM
0

最新回复(0)