Mysql 如何使用Union组合这两个查询?
我尝试使用union语句将两个查询合并为一个查询 这就是我到目前为止所做的:Mysql 如何使用Union组合这两个查询?,mysql,sql,database,Mysql,Sql,Database,我尝试使用union语句将两个查询合并为一个查询 这就是我到目前为止所做的: (Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor', sum(a.amount) as 'Total Paid', 0 as Pocket From Donor d, Pledge p, Payment a Where d.DonorId=p.DonorId and p
(Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
sum(a.amount) as 'Total Paid', 0 as Pocket
From Donor d, Pledge p, Payment a
Where d.DonorId=p.DonorId
and p.pledgeId = a.pledgeId
group by d.donorid)
union all
(Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
0 as 'Total Paid',sum(a.amount) as 'Pocket'
From Donor d, Pledge p, Payment a
Where (a.CompanyId is null)
and d.DonorId=p.DonorId
and p.pledgeId = a.pledgeId
group by d.donorid);
这就产生了:
+--------------+------------+---------+
| Donor | Total Paid | Pocket |
+--------------+------------+---------+
| John Smith | 3500.00 | 0.00 |
| Linda Smith | 250.00 | 0.00 |
| Jack Clinton | 200.00 | 0.00 |
| Jane Doe | 2100.00 | 0.00 |
| John Smith | 0.00 | 1750.00 |
| Linda Smith | 0.00 | 100.00 |
| Jack Clinton | 0.00 | 200.00 |
| Jane Doe | 0.00 | 2100.00 |
+--------------+------------+---------+
我不知道如何摆脱重复的部分。我希望前四个名字与后四个名字结合起来,创建4个名字,其中“total paid”和“pocket”都有值,而不是零
为了清楚起见,我希望输出如下所示:
+--------------+------------+---------+
| Donor | Total Paid | Pocket |
+--------------+------------+---------+
| John Smith | 3500.00 | 1750.00 |
| Linda Smith | 250.00 | 100.00 |
| Jack Clinton | 200.00 | 200.00 |
| Jane Doe | 2100.00 | 2100.00 |
+--------------+------------+---------+
我知道我遗漏了一些关于工会声明的东西,我只是不知道它是什么。非常感谢您的帮助。似乎您不必这样做,您只需计算条件
和(使用大小写):
这将在第5行返回语法错误。我不太熟悉case语句或您使用join的方式,所以我很难弄清楚sytax的错误是什么。我应该抓住它的。谢谢。这正是我想要的。
select concat(d.FirstName, ' ', d.LastName) as 'Donor'
, sum(a.amount) as 'Total Paid'
, sum(case when a.CompanyId is null then a.amount else 0 end) as 'Pocket'
from Donor d
join Pledge p on d.DonorId = p.DonorId
join Payment a on p.pledgeId = a.pledgeId
group by d.donorid