I'm beginner in SQL Server
I have three tables in Database hospital
Two queries to display my result
Query Number One. Display PatientFilesID, TotalOtherServices
SELECT pf.ID AS PatientFileID, SUM(os.Quantum * os.Price) AS TotalOtherServices FROM PatientsFiles pf INNER JOIN OtherServices os ON pf.ID = os.Patient_File_ID WHERE pf.ID = '14' GROUP BY pf.ID
It is true result
PatientFileID | TotalOtherServices
14 194.00
Query Number Two. Display PatientFilesID, TotalPatientDeposit
SELECT pd.Patient_File_ID AS PatientFileID, SUM(pd.Deposit) AS TotalPatientDeposit FROM PatientsDeposits pd WHERE pd.Patient_File_ID = '14' GROUP BY pd.Patient_File_ID
It is true result
PatientFileID | TotalPatientDeposit
14 450.00
My very tired to mix two queries
SELECT pf.ID AS PatientFileID, SUM(os.Quantum * os.Price) AS TotalOtherServices, SUM(pd.Deposit) AS TotalPatientDeposit FROM PatientsFiles pf INNER JOIN OtherServices os ON pf.ID = os.Patient_File_ID INNER JOIN PatientsDeposits pd ON pf.ID = pd.Patient_File_ID WHERE pf.ID = '14' GROUP BY pf.ID
It is false result
PatientFileID | TotalOtherServices | TotalPatientDeposit
14 582.00 1350.00
Thank you for help me in advance
Select pf.ID as PatientFileID,
os.TotalOtherServices,
pd.TotalDeposit
From PatientFiles pf
Left Join
(Select Patient_File_ID as PatientfileID, SUM(os.Quantum * os.Price) AS TotalOtherServices
From OtherServices Group By Patient_File_ID) os on pf.PatientFileID = os.PatientFileID
Left Join
(Select Patient_File_ID AS PatientFileID, SUM(Deposit) AS TotalPatientDeposit
From PatientsDeposits Group By Patient_File_ID) pd on pf.PatientFileID = pd.PatientFileID
At a quick glance, it looks like the values are 3 times bigger than expected.
(194 * 3 = 582, 450 * 3 = 1350).
Also, in your 2nd query you aren't using a INNER JOIN
.
SELECT pf.ID AS PatientFileID,
SUM(pd.Deposit) AS TotalPatientDeposit
FROM PatientsFiles pf INNER JOIN PatientsDeposits pd
ON pf.ID = pd.Patient_File_ID
WHERE pd.Patient_File_ID = '14'
GROUP BY pd.Patient_File_ID
I know that this is not the answer & more of things that should be checked.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.