我试图从同一个表中获取两个不同列的总和,按用户分组.问题是,我必须找到的一个总和,需要一些额外的参数.
表格1:
userid, fname, lname
表2:
assigned_to (is = to userid from other table),
est_hours (est = Estimate hours),
act_hours (act = Actual Hours),
completed_date
我只希望来自已标记为已完成的条目的est_hours(通过在completed_date列中包含值.如果completed_date为空,则act_hours将为空)
我的查询的问题是我没有得到act_hours和est_hours之和的正确值.我认为这与嵌套查询不匹配正确的用户ID有关.
查询:
SELECT userid,
fname,
lname,
SUM(act_hours)+(SELECT SUM(est_hours)
from Table2
WHERE completed_date IS NULL) AS total_hours
FROM TABLE2,
TABLE1
WHERE TABLE1.userid = TABLE2.assigned_to
GROUP BY userid;
我知道我需要以某种方式将OUID查询中的userid传递到内部查询中,以便SUM(est_hours)仅获取该用户的总和.
我一直在圈子里,我的大脑很疼,所以任何帮助都会受到赞赏!
解决方法:
这在SQL Server中有效,在MYSQL中试用,可能有效:
SELECT userid,
fname,
lname,
(SELECT SUM(est_hours)+SUM(act_hours)
from Table2
WHERE completed_date IS NULL and TABLE2.assigned_to=TABLE1.userid) AS total_hours
FROM
TABLE1
OKAY,恢复原来的查询…
SELECT userid,
fname,
lname,
SUM(act_hours)+(SELECT SUM(est_hours)
from Table2
WHERE completed_date IS NULL
AND Table2.assigned_to=Table1.userid)
AS total_hours
FROM TABLE2,
TABLE1
WHERE TABLE1.userid = TABLE2.assigned_to
GROUP BY userid;