2016-08-25 45 views
-1

我有问题,当我查询sql服务器从不同的三个表检索记录它执行完全不正确的值为SUM([Bills.Extrabill_dollar])SUM([Receipts.Amount]),波纹管是我的查询请帮助我。我加入查询返回inncorrect值

select Customers.SNO, SUM(Bills.Extrabill_dollar) as [ExtraAmount],SUM(Receipts.Amount) as [Received] 
from 
Customers left join Bills on Customers.SNO=Bills.CustomerSNO 
left join Receipts on Customers.SNO=Receipts.CSNO 
group by Customers.SNO 

但如果我用波纹管两个单独的查询返回SUM(Extra_dollar)SUM(Extra_dollar)
SELECT Bills.CustomerSNO as [CustomerSNO], SUM(Bills.Extrabill_dollar) AS [TotalExtraAmount] from Bills group by Bills.CustomerSNO

SELECT Receipts.CSNO as [CustomerSNO], SUM(Receipts.Amount) AS [TotalReveied] from Receipts group by Receipts.CSNO正确的结果将返回,将不予退还如果通过使用JOIN来组合这些表,请帮助我Dears。

+0

我们有猜测'完全不正确的values'?请看看[如何创建一个最小化,完整和可验证的示例](http://stackoverflow.com/help/mcve) – NickyvV

回答

0

尊敬您的帮助所有的感谢,长途跋涉后,我发现答案

select c.SNO, c.CName, 
isnull((select SUM(PricePerKwt_dollar) from Bills 
where Bills.CustomerSNO =c.SNO),0.00) as [TotalBills], 
isnull((select SUM(Receipts.Amount) from Receipts 
where Receipts.CSNO = c.SNO),0.00) as [TotalReceipts] 
from Customers c 
0

通过说你得到不正确的答案,我不知道。

我想因为您使用了LEFT JOIN,所以可能会导致问题。 左连接采用来自Customers的所有值,即使存在不匹配的行,它们将在Bills和Receipts下映射到NULL值。

您可以使用此代码并尝试一下。

SELECT Customers.SNO 
, SUM(Bills.Extrabill_dollar) AS [ExtraAmount] 
, SUM(Receipts.Amount) AS [Received] 
FROM 
Customers INNER JOIN Bills 
ON Customers.SNO=Bills.CustomerSNO 
INNER JOIN Receipts 
ON Customers.SNO=Receipts.CSNO 
GROUP BY Customers.SNO 
+0

尊敬的@Vishnu完全尊重你的回答没有解决我的问题,你只删除null列,但[ExtraAmount]和[Received]值仍然不正确,仍然需要您的帮助 –

+0

当我运行单独的查询(不加入BILLS和RECEIPTS表)以获得[ExtraAmount]和[Received]时,会给出正确的值,但当我使用加入多数民众赞成时,我得到不正确的值 –

+0

你需要告诉我你得到什么和你的期望。只是说我无法理解的正确和不正确的值。 –

0
select Customers.SNO, SUM(Bills.Extrabill_dollar) as [ExtraAmount],SUM(Receipts.Amount) as [Received] 
from 
Customers right join Bills on Customers.SNO=Bills.CustomerSNO 
right join Receipts on Customers.SNO=Receipts.CSNO 
group by Customers.SNO 
+0

亲爱的@Ashu波纹管信息显示:“关键字附近的语法错误,其中”。 –

+0

我现在编辑它 – Ashu

+0

“多部分标识符”Customer.SNO“无法再绑定”再说这一点。 –