如何在 SQL 中使用其他表中的数据创建小计
Posted
技术标签:
【中文标题】如何在 SQL 中使用其他表中的数据创建小计【英文标题】:How to create subtotal in SQL with data from other table 【发布时间】:2019-09-24 00:22:56 【问题描述】:我正在尝试为不同邮政编码的销售创建小计,因为发票没有邮政编码,我需要从客户表中获取。
这是我的 sql,它将显示所有交易:
select c.name, c.zip, i.total, i.salestax from customer c, invoice i
where i.sdate >= '2019-09-01' and i.sdate <= '2019-09-30' and
c.accountnum=i.customernr
order by c.zip
我尝试将 SUM 添加到总计和销售税中,但如果这样做,我会收到 SQL 错误。
任何帮助将不胜感激。
谢谢, 凯赫杰
【问题讨论】:
请提供示例数据、期望的结果,并学习使用正确、明确、标准join
语法。
【参考方案1】:
这是您的查询,您可以使用sum() and group-by
获取结果
select c.name, c.zip, sum(i.total) as total, sum(i.salestax) as tax
from invoice i
inner join customer c on c.accountnum=i.customernr
group by c.zip, c.name
where i.sdate >= '2019-09-01' and i.sdate <= '2019-09-30'
order by c.zip
【讨论】:
【参考方案2】:如果您希望按邮政编码汇总,那么这应该是您分组的唯一键。然后你需要聚合函数:
select c.zip, sum(i.total), sum(i.salestax)
from customer c join
invoice i
on c.accountnum = i.customernr
where i.sdate >= '2019-09-01' and i.sdate <= '2019-09-30'
group by c.zip
order by c.zip
【讨论】:
谢谢,加入对我来说一直是个谜。 @KimHJ 。 . .您的问题表明您希望每个邮政编码一行。如果是这样,那么这是更正确的答案。如果您希望每个名称和邮政编码一行,那么金属更正确。以上是关于如何在 SQL 中使用其他表中的数据创建小计的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 vba 从具有多个数据字段的 excel 数据透视表中删除小计