我在那里,我从两个表中选择一个问题如下表:SQL - 选择多行加倍结果
select SUM(tc.WEEKLY_HOURS),
SUM(pc.var_cash)
from time_capture tc
LEFT OUTER JOIN PAYMENT_CAPTURE pc on tc.EMP_NO = pc.emp_no
AND tc.EFFECTIVE_DATE = pc.EFFECTIVE_DATE
where tc.effective_date = '17 June, 2012'
GROUP BY LEFT(tc.COST_CENTRE, 4)
两个表包含:
time_capture
emp_no EFFECTIVE_DATE weekly_hours
---------- ----------------------- ----------------------
1234 2012-06-17 28
PAYMENT_CAPTURE
emp_no EFFECTIVE_DATE INPUT_CODE cost_centre var_cash
---------- ----------------------- ---------- ------------------------- ----------------------
1234 2012-06-17 KEY 5607.03 45
1234 2012-06-17 OTHER 5607.03 19.23
我期待sum(weekly_hours)
返回28,但它返回56(下面),因为(我认为)payment_capture
中的两行。
有人能指出我在这个方向上的正确方向吗?
非常感谢。
weekly_hours var_cash
---------------------- ----------------------
56 64.23
为什么你使用日期字面量''17六月,2012''?请根据语言和其他设置使用明确的格式,这些格式不受SQL Server的不同解释。 ''20120617''更安全。 –
不知道更多的系统设计很难知道这是否是正确的方法,但基于我们知道它出现您应该使用子查询来汇总payment_capture中的数据,然后加入到外层的子查询中查询time_capture。 –
如果你有两名员工在那一天的时间,你想要结果是什么?并且time_capture表中的emp_no/effective_date组合可以有两行吗? –