Ваш подзапрос возвращает три столбца: a
, city
и prov
.То есть для запроса union
/ union all
имена столбцов берутся из первого подзапроса.Нет b
или c
.
Предположительно, вы хотите какой-то JOIN
, а не UNION ALL
.Однако ваш вопрос не объясняет, что вы пытаетесь сделать.И у него нет образцов данных или желаемых результатов.Итак, действительно трудно сказать, чего вы на самом деле хотите.
Мне кажется, что вы действительно хотите:
select city, prov, sum(a), sum(b), sum(c)
from ((select city, prov, count(city) as a, null as b, null as c
from locations left outer join
rides on src = lcode
group by city
) union all
(select city, prov, null, count(city), 0
from locations left outer join
rides
on dst = lcode
group by city
) union all
(select city, prov, null, null, count(city)
from locations l left outer join
enroute e
on l.lcode = e.lcode
group by city
)
) abc
group by city;