У меня есть таблица с элементами (A, B) и периодами. Я хотел бы добавить строки, содержащие отсутствующие периоды для каждого элемента (для элемента A добавить строки с периодами от 1 до 4, а для элемента B добавить строку с периодом 3). Если возможно в процедуре или без фактического изменения исходной таблицы (на самом деле у меня более 1000 предметов)
Оригинал:
item period
a 0
a 5
a 3
b 2
b 4
Желаемая:
item period
a 0
a 1
a 2
a 3
a 4
a 5
b 2
b 3
b 4
Спасибо
Вам нужна таблица чисел. Позвольте мне предположить, что у вас есть один:
select i.item, n.n as period
from (select item, min(period) as minp, max(period) as maxp
from items
group by item
) i join
numbers n
on n.n between i.minp and i.maxp;
Если у вас нет такой таблицы, вы можете ее создать:
select i.item, n.n as period
from (select item, min(period) as minp, max(period) as maxp
from items
group by item
) i join
(select (@rn := @rn + 1) as n
from items i cross join
(select @rn := -1) params
limit 241
) n
on n.n between i.minp and i.maxp;