Mysql 子查询中的SQL SUM()
我有一个具有此模式的分类账表:Mysql 子查询中的SQL SUM(),mysql,sql,Mysql,Sql,我有一个具有此模式的分类账表: LedgerId (int,not null) Timestamp (datetime, not null) CostCenter (int, not null) Payee (varchar(50), not null) Type (varchar(3),not null) Category (varchar(24), not null) Amount (decimal(8,2) not null) Tag
LedgerId (int,not null)
Timestamp (datetime, not null)
CostCenter (int, not null)
Payee (varchar(50), not null)
Type (varchar(3),not null)
Category (varchar(24), not null)
Amount (decimal(8,2) not null)
Tag (varchar(30),null)
Memo (varchar(150), null)
在这里,我为一家小企业记录费用交易
年底时,我必须向国税局发出1099表格,以供收到超过600美元的承包商使用。感谢StackExchange,我运行了以下查询!要获得此信息:
SELECT Payee as Name, SUM(Amount)as Total FROM Ledger
where (convert(date,timestamp) < convert(date,'2019-01-01'))
and (convert(date,timestamp) > convert(date,'2017-12-31'))
and category like '%Contract%'
group by Payee having SUM(amount) > 600
order by Payee
这很好,给了我一份2018年每个承包商和总金额的清单
我现在想要的是一个查询,它将给出我在2018年为这些承包商以及IRS花费的总金额,表格1096。
如果我将此查询用作子查询以获取此总额,则会出现错误。我如何计算所有承包商费用的总和?你是说这不起作用吗
select sum(total)
from (select Payee as Name, SUM(Amount) as Total
from Ledger
where timestamp < '2019-01-01' and
timestamp >= '2018-01-01' and
category like '%Contract%'
group by Payee
having sum(amount) > 600
) l;
您不需要对要实现的逻辑进行日期转换。您的版本工作得非常好。我确实试过了,除了尾随的l;,并且有语法错误。我承认我不知道这是什么。在谷歌搜索了一下之后,我发现这是一个别名,它显然允许查询工作。我还需要做更多的研究来了解它是如何工作的。谢谢@用户3235770。MySQL要求from子句中的所有派生表子查询都有一个表别名。