Как добавить колонку скидок, которая варьируется в зависимости от набора условий? - PullRequest
0 голосов
/ 24 июня 2019

Я бы хотел добавить колонку скидок, она варьируется в зависимости от типа учетной записи и услуг.Столбец скидки отсутствует ни в одной таблице.

Я хочу столбец скидок столбца во время выполнения, в то время как скидка варьируется в зависимости от Resller_name, Account_type и услуг.

Как добавить столбец скидок?

Также мне нужно добавить столбец расчетной стоимости по следующей формуле: a.list_cost * (1-d.discount).Я попытался создать таблицу скидок и добавил значения исключений и создал скрипт ниже:

select a.account, a.name, b.Resller_Name, b.bcn, 
b.Account_Type as "Internal\reseller", a.service, a.list_cost "cost of service",
d.discount, a.list_cost*(1-d.discount) as "Calculated Cost" 
from imtest.cloudchckr_test_full a, imtest.master_info_test_full b, imtest.discount d 
where a.account=b.AWS_id(+) and b.Account_type=d.account_type; 

, но он показывает скидку только на основе типа счета.

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 июня 2019
select 
   a.account, 
   a.name, 
   b.Resller_Name, 
   b.bcn, 
   b.Account_Type as "Internal\reseller", 
   a.service, 
   a.list_cost "cost of service", 
   d.discount, 
   a.list_cost*(1-d.discount) as "Calculated Cost" 
from imtest.cloudchckr_test_full a, 
   imtest.master_info_test_full b, 
   imtest.discount d 
where 
   a.account=b.AWS_id(+) 
   and (d.account_type is null or b.Account_type=d.account_type)
   and (d.Resller_Name is null or b.Resller_Name=d.Resller_Name)
   and (d.service is null or a.service=d.service)
UNION ALL
select 
   a.account, 
   a.name, 
   b.Resller_Name, 
   b.bcn, 
   b.Account_Type as "Internal\reseller", 
   a.service, 
   a.list_cost "cost of service", 
   0, 
   a.list_cost as "Calculated Cost" 
from imtest.cloudchckr_test_full a, 
   imtest.master_info_test_full b
where 
   a.account=b.AWS_id(+) 
   and not exists 
        (SELECT 1 
             FROM imtest.discount d 
          WHERE (d.account_type is null or b.Account_type=d.account_type)
            and (d.Resller_Name is null or b.Resller_Name=d.Resller_Name)
            and (d.service is null or a.service=d.service)
         )
0 голосов
/ 24 июня 2019

Вы можете добавить заказ в таблицу скидок или любой уникальный идентификатор в таблице скидок, после этого присоединитесь ко всей таблице и получите сумму скидки. При левом соединении с таблицей скидок вы получите нулевое значение, если данных не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...