Ниже приведены данные, которые у меня есть
Пример таблицы
WH_QTY - это общее количество, доступное, VIP, A, B, C - приоритет.например, продукт должен быть сначала выделен VIP FIRST, а затем A, B, C.
Используя операторы case, я смог получить правильные значения для VIP_Avail, A_Avail, но переходя к B_Avail, я получил следующую ошибку.«Выражения регистра могут быть вложены только до уровня 10»
Все, что мне нужно, - это использовать вычисленный столбец VIP_Avail в качестве основы для моих расчетов A_Avail и так далее.Но так как я ссылаюсь на все заявления по делу, это не так.
Ниже приведен запрос для VIP_Avail
IIF(ORDER_ITEMS.WH_OH =0,0,IIF(ORDER_ITEMS.WH_OH>=ORDER_AVAILABLE.VIP,ORDER_AVAILABLE.VIP,IIF(ORDER_ITEMS.WH_OH<ORDER_AVAILABLE.VIP,ORDER_ITEMS.WH_OH,0))) AS VIP_AVAIL
, а ниже - запрос для A_Avail
CASE
WHEN
ORDER_ITEMS.WH_OH = 0 THEN 0
-- WHEN (WH_QTY-VIP)<A AND WH> 0 THEN (WH-VIP)
WHEN
((ORDER_ITEMS.WH_OH-IIF(ORDER_ITEMS.WH_OH =0,0,IIF(ORDER_ITEMS.WH_OH>=ORDER_AVAILABLE.VIP,ORDER_AVAILABLE.VIP,IIF(ORDER_ITEMS.WH_OH<ORDER_AVAILABLE.VIP,ORDER_ITEMS.WH_OH,0))))<A AND ORDER_ITEMS.WH_OH>0) THEN (ORDER_ITEMS.WH_OH-IIF(ORDER_ITEMS.WH_OH =0,0,IIF(ORDER_ITEMS.WH_OH>=ORDER_AVAILABLE.VIP,ORDER_AVAILABLE.VIP,IIF(ORDER_ITEMS.WH_OH<ORDER_AVAILABLE.VIP,ORDER_ITEMS.WH_OH,0))))
-- WHEN (WH_QTY - VIP) >= A THEN A
WHEN
(ORDER_ITEMS.WH_OH-IIF(ORDER_ITEMS.WH_OH =0,0,IIF(ORDER_ITEMS.WH_OH>=ORDER_AVAILABLE.VIP,ORDER_AVAILABLE.VIP,IIF(ORDER_ITEMS.WH_OH<ORDER_AVAILABLE.VIP,ORDER_ITEMS.WH_OH,0))))>=ORDER_AVAILABLE.A THEN ORDER_AVAILABLE.A
END AS A_AVAIL
Спасибо, Чен