【发布时间】:2013-12-30 21:54:51
【问题描述】:
我通过这个查询得到错误的总和答案 - 有人知道我做错了什么吗?我得到第一个总和两次,第二个总和是实际值的 3 倍,依此类推。
SELECT ogr.Region_ID,
ogr.Region_Name,
Sum(daf.Total_Allowance) AS DailyAllowance,
Sum(naf.Total_Allowance) AS NightAllowance,
Sum(caf.Total_Amount) AS AdvanceCash,
Sum(att.Extra_Amounts) AS OverTime,
Sum(eef.Total_Amount) AS EmployeeExpense,
Sum(maf.Total_Amount) AS MobileAllowance,
Sum(odf.On_Week_Amount) AS OnWeek,
Sum(emp.Salary) AS EmployeeSalary
FROM ORG_Region ogr
LEFT OUTER JOIN DailyAllowanceForm AS daf
ON daf.Region_ID = ogr.Region_ID
LEFT OUTER JOIN NightAllowance AS naf
ON naf.Region_ID = ogr.Region_ID
LEFT OUTER JOIN CashAdvance AS caf
ON caf.Region_ID = ogr.Region_ID
LEFT OUTER JOIN Attandence AS att
ON att.Region_ID = ogr.Region_ID
LEFT OUTER JOIN EmployeeExpensesForm AS eef
ON eef.Region_ID = ogr.Region_ID
LEFT OUTER JOIN MobileAllowance AS maf
ON maf.Region_ID = ogr.Region_ID
LEFT OUTER JOIN OnDutyForms AS odf
ON odf.Region_ID = ogr.Region_ID
LEFT OUTER JOIN Employee AS emp
ON emp.Region = ogr.Region_ID
GROUP BY ogr.Region_ID,ogr.Region_Name
【问题讨论】:
-
你为什么不在这里使用
inner join?您是否还在这些表中使用 enable、disable 标志? -
能否展示样本数据和样本结果?
-
如果 naf 有 3 行,无论在哪个区域,它都会将所有三行相加并在该区域前面显示总和。这是由于左外连接
标签: sql sql-server sql-server-2008 select group-by