Когда мне приходилось делать подобные вещи в прошлом, я использовал:
Price Unit Display
10.00 item null
100.00 box null
null null "Call for Pricing"
Цена будет десятичным типом данных (любой точный числовой, не числовой или вещественный), единица измерения и отображение будут представлять собой строковый тип данных.
Затем с помощью оператора case отображалась цена либо с ценой за единицу, либо с дисплеем. Также поместите ограничение или триггер в столбец отображения, чтобы он был нулевым, если цена не равна нулю. Ограничение или триггер также должны требовать значения в единицах, если цена не равна нулю.
Таким образом, вы можете вычислять цены для заказа, где это возможно, и опускать их, когда цена не указана, но отображать оба. Я бы также ввел правило работы, чтобы убедиться, что итоговая сумма не может быть подведена до тех пор, пока не будет решен запрос цены (который также должен был бы иметь возможность вставить специальную оценку в детали заказа, а не просто извлечь из таблица цен).