2016-08-25 3 views
-1

SQL Serverにクエリを実行して異なる3つのテーブルから完全に不正な値のSUM([Bills.Extrabill_dollar])SUM([Receipts.Amount])のレコードを取得するときに問題が発生しました。私のジョインクエリはインプラント値を返す

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 

私は(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.CSNOSUMを返すために、2つの別々のクエリ怒鳴る使用する場合、正しい結果が返されることはありませんどの返されます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 and 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はこれを再度拘束できませんでした。 –

関連する問題