首页 新闻 会员 周边

请教SQL

0
[已解决问题] 解决于 2009-07-17 22:09

表sale结构如下:

ID int ,productName varchar(10),Category int ,sale money,date datetime

其中ID自增,为主键

=======================================================

表Category 结构如下:

ID int ,CategoryName varchar(20)

其中ID自增,为主键

要求一条SQL语句查询如下格式的数据。

 

产品 类别 季度 本季销量 截止本季度销量
牛奶 奶制品 2009 1 200 200
牛奶 奶制品 2009 2 225 425
牛奶 奶制品 2009 3 189 614
牛奶 奶制品 2009 4 212 826
矿泉水 饮料 2009 1 300 300
nero_liu的主页 nero_liu | 初学一级 | 园豆:14
提问于:2009-07-12 12:00
< >
分享
最佳答案
0

没有建表,就这么写的。意思差不多,其实就是一个自关联的子查询。 不过数据量大的话,效率可能有点问题哦。 WITH SaleData AS ( SELECT a.productName AS 产品, b.CategoryName AS 分类, YEAR(a.Date) AS 年, DATEPART (Q, a.Date) AS 季度, SUM(SaleMoney) 销量 FROM SALE a JOIN Category b WHERE a.Category = b.ID GROUP BY b.CategoryName, a.productName, YEAR(a.Date), DATEPART (Q, a.Date) ) SELECT a.*, (SELECT SUM(销量)FROM SaleData b WHERE b.分类 = a.分类 AND b.年 = a.年 AND b.季度 <= a.季度 ) FROM SaleData a;

阿水 | 小虾三级 |园豆:506 | 2009-07-14 08:53
其他回答(2)
0

SELECT productName,(SELECT CategoryName FROM [Category] WHERE ID=)Category,....

J.z | 园豆:180 (初学一级) | 2009-07-12 18:58
0

select a.*,(select sum(sale) from sale where productName=a.产品 and
year(date)=a.年 and datepart(quarter,date)<=a.季度)as 截止本季度销量   
from
  (select sale.productName as 产品 ,Category.CategoryName as 类别,
    year(sale.date) as 年,datepart(quarter,sale.date) as 季度,
    sum(sale.sale) as 本季度销量
    from
    sale join Category on sale.Category=Category.id
    group by sale.productName,Category.CategoryName,
    year(sale.date),datepart(quarter,sale.date) 
)  a

默默→思考 | 园豆:212 (菜鸟二级) | 2009-07-14 13:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册