У меня есть два запроса, которые я пытаюсь объединить в один, используя инструкцию union.Как объединить эти два запроса с помощью 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.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 имени с «итоговой оплатой» и «карманом», чтобы иметь значения, а не нули.
Просто чтобы быть ясно, я хочу, чтобы выход выглядеть следующим образом:
+--------------+------------+---------+
| 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. Я не очень хорошо знаком с утверждением случая или как вы использовали соединение, поэтому мне трудно понять, что такое ошибка sytax. – ethanm1
Я должен был это понять. Большое спасибо. Это именно то, что я искал. – ethanm1