sql - sql查询根据数据不同的列对2个表的列求和
问题描述
在进行 sql 查询付出了很多努力之后,我最终陷入了混乱,到目前为止我所做的是这是 table1
select bill_no='2016-2017', B_id, COALESCE(sum(amount-gr),0) as amount, COALESCE (sum(tax),0) as tax, COALESCE(sum(amount_paid),0) as amount_paid, COALESCE(sum(gr),0) as gr,'sun4269' as forUser from tbl_addbill
where forUser='sun4269' and bill_date between '2016-04-01' and '2017-03-31' group by B_id;
bill_no B_id amount tax amount_paid gr forUser
2016-2017 B-1 34875 0 0 0 sun4269
2016-2017 L-1 21014 0 19363 0 sun4269
2016-2017 P-1 10217 0 0 0 sun4269
2016-2017 S-1 30000 0 14000 0 sun4269
2016-2017 T-1 66237 0 21426 0 sun4269
这是表2
select bill_no,B_id,amount,tax,amount_paid,gr,forUser from tbl_addbill where forUser='sun4269' and bill_date is null and bill_no='2015-2016'
bill_no B_id amount tax amount_paid gr forUser
2015-2016 K-1 181523 0 22159 0 sun4269
2015-2016 L-1 25266 0 4644 0 sun4269
2015-2016 P-1 122383 0 122383 113162 sun4269
2015-2016 A-1 38367 1827 0 0 sun4269
2015-2016 S-1 698262 18575 577120 113449 sun4269
可以看出table1和table2中的'B_id'列具有相同和不同的值(L-1重复但B-1不是),我想要的是L-1是否在表中重复,然后从两个表中将 amount,amount_paid,tax,gr sum 与“2016-2017”相加,如果 B-1 在任何表中都是唯一的,那么它也应该与“2016-2017”的值一起存在
解决方案
UNION
您的 table1 和 table2 查询,并在'd 表上执行GROUP BY
和关联的聚合函数。UNION
如果您只UNION
从 table1 和 table2 中的一个开始,您会明白我的意思,因为结果将是一个表,其中包含 table1 和 table2 中的所有行;然后,您可以添加GROUP BY B_id
所需的聚合函数(例如SUM()
)。
推荐阅读
- linux - Logging Linux Terminal Output to Files by Date?
- javascript - 创建多个画布模式失败
- azure - Azure B2C ADFS autologin logout failed
- html - 如何构建html时事通讯响应块顺序
- caching - Why Entity Framework caching query results when i change parameters, I dont deserve it
- unit-testing - 我们如何才能发现 Jasmine Chutzpah 与哪个版本相关联?
- javascript - jquery/javascript loop slider item
- python - 在两个不同的 tkinter 嵌入式 matplotlib 烛台图表之间切换时不会出现数据
- javascript - How to sort JSON array elements in descending order?
- java - 如何验证 Google 端点中的 Firebase 令牌?