日期:2014-05-18  浏览次数:20427 次

【100分】求一个SQL语句
在Northwind数据库里面有四个表,分别是(仅列出会用到的字段):
1.Customers(CustomerID,CustomerName,...)
2.Orders(OrderID,CustomerID,OrderDate,...)
3.Products(ProductID,ProductName,UnitPrice,UnitsOnOrder,UnitsInStock,...)
4.Order   Details(OrderID,ProductID,UnitPrice,Quantity,...)
现在要统计1998年度,对各个客户各个季度的销售总额:
即要得到如下结果:
CompanyName,ProductID,ProductName,第一季度,第二季度,第三季度,第四季度

------解决方案--------------------
--try

select CustomerID, ProductID, datepart(qq, OrderDate),
第一季度=sum(case when datepart(qq, OrderDate)=1 then UnitPrice*Quantity else 0 end),
第二季度=sum(case when datepart(qq, OrderDate)=2 then UnitPrice*Quantity else 0 end),
第三季度=sum(case when datepart(qq, OrderDate)=3 then UnitPrice*Quantity else 0 end),
第四季度=sum(case when datepart(qq, OrderDate)=4 then UnitPrice*Quantity else 0 end)
from orders A
left join [Order Details] B on A.OrderID=B.OrderID
where year(OrderDate)=1998
group by CustomerID, ProductID, datepart(qq, OrderDate)
------解决方案--------------------
你的SQl语句没加年份限制呢?我加了结果出错!请指点。
----------------------------
select _c.CompanyName,_p.ProductID,_p.ProductName,year(_o.OrderDate)
,sum(case when datepart(qq,_o.OrderDate) =1 then _od.Quantity*_od.UnitPrice else 0 end) as 第一季度
,sum(case when datepart(qq,_o.OrderDate) =2 then _od.Quantity*_od.UnitPrice else 0 end) as 第二季度
,sum(case when datepart(qq,_o.OrderDate) =3 then _od.Quantity*_od.UnitPrice else 0 end) as 第三季度
,sum(case when datepart(qq,_o.OrderDate) =4 then _od.Quantity*_od.UnitPrice else 0 end) as 第四季度
from Orders _o
join [Order Details] _od on _o.OrderID = _od.OrderID
join Customers _c on _c.CustomerID = _o.CustomerID
join Products _p on _p.ProductID = _od.ProductID
where year(_o.OrderDate) = 1998--年份限制加在这儿
group by _c.CompanyName,_p.ProductName,_p.ProductID,year(_o.OrderDate)