Не зная ответа на мой комментарий выше, я предполагаю, что вы хотите сохранить полный аудит, а не стирать исторические записи;таким образом, заказы типа 78A 78B 78C являются просто форматом отображения.
Если у вас есть одна таблица Order (содержащая ваш OrderId, UserId, DeskId, времена и любые другие вещи верхнего уровня) и таблица OrderItem (содержащий ваш OrderItemId, OrderId, LineItemId - показывает 1,2 или 3 для вашей первой и необязательной второй и третьей позиций в заказе и ProductId) и таблицу Product (ProductId, Name, Description)
затемэто довольно просто (к счастью) с помощью оператора по модулю, который дает остаток от деления, что позволяет вам в этом случае считать в группах 3 и 100 (или любое другое число, которое вы пожелаете).Просто сделайте что-то вроде следующего: (вы захотите объединить элементы в один столбец, я просто выделил их отдельно, чтобы вы могли видеть, как они работают) Очевидно, присоедините / запросите / отфильтруйте таблицы пользователей, рабочих столов и таблиц продуктов соответствующим образом.
select
o.OrderId,
o.UserId,
o.DeskId
o.OrderId%100 + 1 as OrderNumber,
case when LineItem%3 = 1 then 'A'
when LineItem%3 = 2 then 'B'
when LineItem%3 = 0 then 'C'
end as ItemLetter,
oi.ProductId
from tb_Order o inner join tb_OrderItem oi on o.OrderId=oi.OrderId
В качестве альтернативы, вы можете добавить itemLetter (A, B, C) и / или OrderNumber (1-100) как вычисленные (и сохраненные) столбцы в самих таблицах, чтобы они вычислялисьодин раз при вставке, а не при пересчете / форматировании, когда они выбраны.Этот вид ломает некоторые лучшие практики, когда вы сохраняете необработанные данные в БД и форматируете их при извлечении;но если вы не собираетесь обновлять данные и собираетесь выбирать данные больше, чем вы собираетесь записывать данные;тогда я нарушу это правило и вычислю ваше форматирование во время вставки