Единственный способ узнать, как это сделать в Access, - использовать таблицу подсчета. Эта таблица будет содержать все возможные числа, которые вам могут понадобиться, от 1 до ?
create table tallynumbers (nbrs INTEGER)
Вы можете довольно легко загрузить это через Excel.
Тогда вы можете просто присоединиться следующим образом:
select ReportingName, nbr
from reporting_items as ri, tallynumbers as tn
where tn.nbr between ri.[Starting Number] and iif(IsNull(ri.[Ending Number]),ri.[Starting Number],ri.[Ending Number])
ОБНОВЛЕНИЕ Если вы можете сделать все это в SQL Server 2005+, вот еще один вариант для вас
Вот таблица отчетов
create table reports (ReportingName varchar(10), StartingNumber int, EndingNumber int)
Теперь заполните его примерными значениями.
insert into reports
values ('AW', 965845, null),
('GRT', 6700, 6705),
('QEF', 2011, null)
Теперь для рекурсивного CTE, чтобы получить его в нужном формате
;with RecurReports
as
(
select ReportingName, StartingNumber as nbr,
coalesce(EndingNumber,startingnumber) as enbr
from reports
union all select rr.ReportingName, nbr +1, enbr
from reports r
inner join RecurReports rr
on r.ReportingName=rr.ReportingName
where nbr < enbr
)
select ReportingName, nbr as Number from RecurReports
Вот скрипт SQL: http://www.sqlfiddle.com/#!6/91137 /1а>
person
attila
schedule
28.03.2014