我正在编写一个脚本,以便向我返回MS SQL中客户的总销售额。
但是,当我输入脚本时,我没有返回正确的金额。我相信它可能与我加入我的表的方式有关,或者我错过了某个SUM函数。无论哪种方式,我都会非常感激我们的帮助。 编辑:抱歉忘记提及它必须在@CustomerName中接受一个变量以与不同的客户一起使用
create procedure TotalSalesValue @CustomerName varchar(30)
AS
SELECT top 1 @CustomerName, sum(quantity * SellingPrice) amount
from tblCustomer c
join tblProduct p
on c.CustomerID=p.ProductID
join tblSOLine so
on so.ProductID = p.ProductID
group by c.CustomerName
order by amount desc
如果需要,我也包括了我的数据库图表。再次感谢!
数据库图表:
答案 0 :(得分:0)
可能是这样
create procedure TotalSalesValue @CustomerName varchar(30)
AS
SELECT q0.CustomerName, sum(q0.amount) as 'amount' FROM (
SELECT c.CustomerName, sum(so.quantity * p.SellingPrice) as 'amount'
from tblCustomer c
join tblProduct p
on c.CustomerID=p.ProductID
join tblSOLine so
on so.ProductID = p.ProductID
where c.CustomerName=@CustomerName) as q0
程序按名称选择目标客户的所有金额。
答案 1 :(得分:0)
您缺少SELECT上的表格,您需要加入ordre中的tblSOHeader以考虑所有销售订单
create procedure TotalSalesValue @CustomerName varchar(30)
AS
SELECT top 1 @CustomerName, sum(SO.quantity * p.SellingPrice) amount
from tblCustomer c
inner join tblSOHeader h ON h.CustomerID=c.CustomerID
inner join tblSOLine so ON so.SOHeaderID=h.SOHeaderID
inner join tblProduct p ON so.ProductID=p.ProductID
group by c.CustomerName
order by amount desc
答案 2 :(得分:0)
有关查询问题的说明:
tblProduct
tblCustomer
,这根据架构tblSoHeader
customerID
,然后加入tblSOLine
,然后加入tblProduct
customerName
必须在where
条款中请尝试以下查询
create procedure TotalSalesValue @CustomerName varchar(30)
AS
SELECT CustomerName, sum(so.quantity * p.SellingPrice) amount
from tblCustomer c
join tblSoHeader H on c.CustomerID = H.CustomerID
join tblSOLine so on so.SoHeaderID = H.SoheaderID
join tblProduct p on p.ProductID = so.ProductID
where CustomerName=@CustomerName
group by c.CustomerName