应用题   某超市采用了SQL Server 2008数据库管理系统,该超市有一个需求,需要统计指定年份中每一种商品的销售总额,例如:查询2014年所有商品的销售总额。
    已知商品结构如下:
    商品表(商品号, 商品名, 单价)
    销售表(商品号, 销售时间, 销售数量)。
    假设单价和销售数量均为int型, 商品号和商品名均为varchar(50)类型,销售时间为datetime型。请给出满足如下要求的多语句表值函数,该函数统计指定年份中每种商品的销售总额。
    该函数名为:GOODS_PROFIT(@year int),函数的返回结果格式如下:
    商品号 销售总额
    A004    30000
    B002    50000
 
【正确答案】CREATE FUNCTION GOODS_PROFIT(@year int) RETURNS @f_GOODS_PROFIT table( 商品号 varchar(50), 销售总额 int) AS BEGIN INSERT INTO @f_GOODS_ PROFIT SELECT a.商品号, SUM(a.单价*b.销售数量) FROM 商品表 a JOIN 销售表 b ON a.商品号=b.商品号 WHERE year(b.销售时间)= @year GROUP BY a.商品号 RETURN END
【答案解析】采用JOIN联合查询,先用WHERE条件查询出符合销售时间=@year的记录,再将找出的记录和商品表合并,并采用单价*销售数量计算出联合查询的表数据,最后根据GROUP BY统计每种商品的销售价格总和。