MySQL拼接表

这段代码展示了如何使用SQL进行外连接操作,统计过去五年中每年的建材费和业务费。通过LEFT JOIN连接多个子查询,分别对应不同年份的数据,然后将结果横向拼接展示。每个子查询计算了特定年份内建材部和业务部的费用总和。

外连接两表按照年份统计五年的建材费和业务费,并将统计的五年的表横向拼接

代码:

select a.year,a.jccost,a.ywcost,b.year,b.jccost,b.ywcost,c.year,c.jccost,c.ywcost,d.year,d.jccost,d.ywcost,e.year,e.jccost,e.ywcost
from (
select CONCAT(2021,'年') year,
SUM(IF(b.name='建材部',a.mount,0.00)) as jccost,
SUM(IF(b.name='业务部',a.mount,0.00)) as ywcost
FROM a 
LEFT JOIN b on a.custom4=b.ordercode
WHERE YEAR(a.date)=2021
)a
LEFT JOIN(
SELECT CONCAT(2021-1,'年') year,
SUM(IF(b.name='建材部',a.mount,0.00)) as jccost,
SUM(IF(b.name='业务部',a.amount,0.00)) as ywcost
FROM a 
LEFT JOIN b on a.custom4=b.ordercode
WHERE YEAR(a.date)=2021-1
)b
on 1=1
LEFT JOIN(
SELECT CONCAT(2021-2,'年') year,
SUM(IF(b.name='建材部',a.mount,0.00)) as jccost,
SUM(IF(b.name='业务部',a.mount,0.00)) as ywcost
FROM a 
LEFT JOIN b on a.custom4=b.ordercode
WHERE YEAR(a.date)=2021-2
)c
on 1=1
LEFT JOIN(
SELECT CONCAT(2021-3,'年') year,
SUM(IF(b.name='建材部',a.mount,0.00)) as jccost,
SUM(IF(b.name='业务部',a.mount,0.00)) as ywcost
FROM a 
LEFT JOIN b on a.custom4=b.ordercode
WHERE YEAR(a.date)=2021-3
)d
on 1=1
LEFT JOIN(
SELECT CONCAT(2021-4,'年') year,
SUM(IF(b.name='建材部',a.mount,0.00)) as jccost,
SUM(IF(b.name='业务部',a.mount,0.00)) as ywcost
FROM a 
LEFT JOIN b on a.custom4=b.ordercode
WHERE YEAR(a.date)=2021-4
)e
on 1=1

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值