2016-08-25 2 views
-1

J'ai un problème lorsque je demande au serveur SQL pour récupérer des enregistrements de différents trois tables son exécution des valeurs totalement incorrectes pour SUM([Bills.Extrabill_dollar]) et SUM([Receipts.Amount]), ci-dessous est ma requête s'il vous plaît aidez-moi.ma requête de jointure renvoie des valeurs incorrectes

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 

mais si je l'utilise ci-dessous deux requêtes distinctes pour retourner SUM (Extra_dollar) et 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 les bons résultats seront retournés qui ne seront pas retournés si combiner ces tables en utilisant JOIN, aidez-moi s'il vous plaît Dears.

+0

Doit-on deviner le 'values' totalement incorrect? S'il vous plaît jeter un oeil à [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) – NickyvV

Répondre

0

Cher merci pour votre aide, après long voyage j'ai trouvé la réponse:

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

En disant que vous avez obtenu des réponses incorrectes, je ne le saurais pas.

Je pense que puisque vous utilisez LEFT JOIN, cela peut être à l'origine du problème. La jointure à gauche prend toutes les valeurs des clients, même les lignes non mises en correspondance seront présentes, qui seront mappées aux valeurs NULL sous Bills and Receipts.

Vous pouvez utiliser ce code et l'essayer.

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

Cher @Vishnu avec le plein respect de votre réponse n'a pas résolu mon problème, vous avez seulement supprimé le null colonnes mais les valeurs [ExtraAmount] et [Received] sont toujours incorrectes, encore besoin de votre aide –

+0

lorsque j'exécute des requêtes séparées (sans joindre les tables BILLS et RECEIPTS) pour obtenir [ExtraAmount] et [Received], qui donnera les valeurs correctes quand j'utilise joindre c'est quand je reçois les valeurs incorrectes –

+0

Vous devez me dire ce que vous obtenez et ce que vous attendez. Juste dire des valeurs correctes et incorrectes que je suis incapable de comprendre. –

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

Cher message @Ashu ci-dessous affiché: "Syntaxe incorrecte près du mot clé" où ". –

+0

Je l'ai édité maintenant – Ashu

+0

"L'identificateur en plusieurs parties" Customer.SNO "ne pouvait pas être lié" à nouveau en disant cela. –