首页 > 解决方案 > 从另一表的列中减去一列的总和

问题描述

我试过的:

SELECT requestformtbl.employee_name, requestformtbl.request_type, requestformtbl.total_day,
                requestformtbl.request_status, requestformtbl.admin_remark, requestformtbl.confirmed_by, requestformtbl.date_confirmed, requesttbl.max_allotment,
                (requesttbl.max_allotment - sum(requestformtbl.total_day)) as Available from requestformtbl inner join requesttbl on 
                requestformtbl.request_type = requesttbl.request_type;

错误:列 'requestformtbl.employee_name' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

如果 requestttbl.request_type="Vacation Leave" 有 requesttbl.max_allotment=20,当 requestformtbl 中插入一个新条目时 requestformtbl.request_type="Vacation Leave" 和 requestformtbl.total_day=5 我想获得剩余的可用假期

标签: mysqlasp.netvb.net

解决方案


您可以在不使用 aGROUP BY的情况下获得所需的结果,方法是使用相关子查询来获取员工使用天数的总和:

SELECT rft.employee_name, 
       rft.request_type, 
       rft.total_day,
       rft.request_status, 
       rft.admin_remark, 
       rft.confirmed_by, 
       rft.date_confirmed, 
       rt.max_allotment,
       rt.max_allotment - (select sum(total_day) 
                           from requestformtbl rft2 
                           where rft2.employee_name = rft.employee_name) as Available
from requestformtbl rft
inner join requesttbl rt on rft.request_type = rt.request_type;

注意我使用了表别名来使查询更具可读性。


推荐阅读