首页 > 解决方案 > SQL Inner Join 组合结果中的行 - 结果太少

问题描述

我正在尝试从四个表中创建一个报告:Master、Details、Labor、Costs。目前,我有一份工作报告从 Jobs、Details 和 Costs 中提取列。所有表的共享键是 JobNumber。我希望获得每项工作的总成本和总小时数。这是我的代码,适用于三个表:

SELECT      
              JC_JobMaster.JobNumber, 
              JC_JobMaster.JobDescription1 AS Customer_Name, 
              JC_JobMaster.JobDescription2 AS Work,
              JC_JobSortCategories.SortCategory2 AS Work_Type, 
              JC_JobMaster.CustomerCode, 
              JC_JobMaster.ContractValue, 
              SUM(JC_JobBalancesCostDollars.CurrentPeriodAmount*-1) AS Gross_profit,
              JC_JobSortCategories.SortCategory1 AS City, 
              JC_JobSortCategories.SortCategory4 AS Salesman
FROM            
              JC_JobMaster INNER JOIN
              JC_JobSortCategories ON JC_JobMaster.JobNumber = JC_JobSortCategories.JobNumber INNER JOIN
              JC_JobBalancesCostDollars ON JC_JobMaster.JobNumber = JC_JobBalancesCostDollars.JobNumber 
WHERE   
              JC_JobMaster.JobNumber between '11566' and '13441' and
              JC_JobSortCategories.SortCategory5 = 'AWARDED' and
              JC_JobSortCategories.SortCategory2 = 'FPR' and 
              JC_JobSortCategories.SortCategory1 in ('1')
Group By    
              JC_JobMaster.JobNumber, 
              JC_JobMaster.JobDescription1,
              JC_JobMaster.JobDescription2, 
              JC_JobSortCategories.SortCategory2, 
              JC_JobMaster.CustomerCode, 
              JC_JobMaster.ContractValue, 
              JC_JobSortCategories.SortCategory1, 
              JC_JobSortCategories.SortCategory4
Order by 
              JC_JobMaster.JobNumber

一切正常 - 此查询返回 45 行,其中包含易于验证的数据。但是,使用内连接添加第四个表INNER JOIN JC_JobCostDetailLabourHours ON JC_JobMaster.JobNumber = JC_JobCostDetailLabourHours.JobNumber只返回 7 行,并且总和列Gross_profit不正确。使用 LEFT JOIN 而不是 INNER JOIN 给了我正确的 45 行,但总和列仍然不正确。LabourHours 和 BalancesCostDollars 表对于我想要求和的每个工作编号都有多个条目。添加第四个表我做错了什么,或者我只是碰巧在第一个求和列中得到了正确的结果?

标签: sql

解决方案


推荐阅读