Приветствует! У меня есть 12 столов, по одному на каждый месяц года:Запрос Ms-Access несколько таблиц
January
+----+------+
| id | venta|
+----+------+
| 1 | 250 |
| 3 | 500 |
| 5 | 200 |
| 7 | 100 |
+----+------+
February
+----+------+
| id | venta|
+----+------+
| 1 | 350 |
| 2 | 400 |
| 3 | 500 |
| 4 | 800 |
+----+------+
т.д.
мне нужно сделать запрос, где в результате что-то вроде этого:
Annual Sales
+----+-----------+-----------+
| id | venta_Jan | venta_Feb |
+----+-----------+-----------+
| 1 | 250 | 350 |
| 2 | 0 | 400 |
| 3 | 500 | 500 |
| 4 | 0 | 800 |
| 5 | 200 | 0 |
| 7 | 100 | 0 |
+----+-----------+-----------+
Где согласование Иды из обеих таблиц не дублируются, а пропущенные идентификаторы из других месяцев отображаются, помещая 0 или любой другой символ, указывающий, что в этом месяце не было продаж из этого идентификатора.
Мне пришлось применить это для MySQL с ASP, и все было круто, но для консольного приложения я должен сделать это с помощью ms-access, не спрашивайте меня, почему я здесь, как консультант.
MySQL код выглядит так:
select id,
sum(case when month = 'Enero' then venta else 0 end) as Venta_Ene,
sum(case when month = 'Febrero' then venta else 0 end) as Venta_Feb,
sum(case when month = 'Marzo' then venta else 0 end) as Venta_Mar,
sum(case when month = 'Abril' then venta else 0 end) as Venta_Abr,
sum(case when month = 'Mayo' then venta else 0 end) as Venta_May,
sum(case when month = 'Junio' then venta else 0 end) as Venta_Jun,
sum(case when month = 'Julio' then venta else 0 end) as Venta_Jul,
sum(case when month = 'Agosto' then venta else 0 end) as Venta_Ago,
sum(case when month = 'Septiembre' then venta else 0 end) as Venta_Sep,
sum(case when month = 'Octubre' then venta else 0 end) as Venta_Oct
from (
(select 'Enero' as month, id, venta from ene) union all
(select 'Febrero' as month, id, venta from febr) union all
(select 'Marzo' as month, id, venta from marz) union all
(select 'Abril' as month, id, venta from abri) union all
(select 'Mayo' as month, id, venta from mayo) union all
(select 'Junio' as month, id, venta from juni) union all
(select 'Julio' as month, id, venta from juli) union all
(select 'Agosto' as month, id, venta from agos) union all
(select 'Septiembre' as month, id, venta from sept) union all
(select 'Octubre' as month, id, venta from octu)
) as t
group by id;
И это прекрасно работает, то и у меня есть что-то подобное для MS-Access:
select Cliente,
sum(iif month = 'Enero', Venta, 0) as Venta_Ene,
sum(iif month = 'Febrero', Venta, 0) as Venta_Feb,
sum(iif month = 'Marzo', Venta, 0) as Venta_Mar,
sum(iif month = 'Abril', Venta, 0) as Venta_Abr,
sum(iif month = 'Mayo', Venta, 0) as Venta_May,
sum(iif month = 'Junio', Venta, 0) as Venta_Jun,
sum(iif month = 'Julio', Venta, 0) as Venta_Jul,
sum(iif month = 'Agosto', Venta, 0) as Venta_Ago,
sum(iif month = 'Septiembre', Venta, 0) as Venta_Sep,
sum(iif month = 'Octubre', Venta, 0) as Venta_Oct
from (
(select 'Enero' as month, Cliente, Venta from [Venta Ene 2013]) union all
(select 'Febrero' as month, Cliente, Venta from [Venta Feb 2013]) union all
(select 'Marzo' as month, Cliente, Venta from [Venta Marzo 2013]) union all
(select 'Abril' as month, Cliente, Venta from [Venta Abril 2013]) union all
(select 'Mayo' as month, Cliente, Venta from [Venta Mayo 2013]) union all
(select 'Junio' as month, Cliente, Venta from [Venta Junio 2013]) union all
(select 'Julio' as month, Cliente, Venta from [Venta Julio 2013]) union all
(select 'Agosto' as month, Cliente, Venta from [Venta Agosto 2013]) union all
(select 'Septiembre' as month, Cliente, Venta from [Venta Sept 2013]) union all
(select 'Octubre' as month, Cliente, Venta from [Venta Oct 2013])
) as t
group by Cliente;
Но, есть "JOIN ошибка" , Я читал, что псевдонимы не могут применяться в пределах «от», но тогда я не знаю, как это исправить. Заранее благодарю вас!
'У меня есть 12 столов, по одному на каждый месяц year' => Это не кажется хорошей идеей :) –
Почему, почему у вас есть отдельная таблица за каждый месяц? – Taryn
Это ужасная идея ... Но компания вручила мне эту БД, и они не хотят, чтобы я ее менял. Мне нужно создавать отчеты. – user3063952