У нас есть следующий SQL, который мы используем для расчета общих затрат.
SELECT
DailyProduction.CustomerId as CustomerId,
SUM(Resource.CostPerUnit * DailyProduction.UnitsToStorage + Resource.CostPerUnit * DailyProduction.UnitsToMarket) AS TotalCost
FROM
dbo.hgm_ResourceTypes Resource
JOIN
dbo.hgm_ResourceDailyProduction DailyProduction
ON
Resource.ResourceId = DailyProduction.ResourceId
GROUP BY
DailyProduction.CustomerId
Как видно, мы собираем данные из двух разных таблиц, чтобы рассчитать общую стоимость производства для каждого клиента.
Теперь у нас есть требование добавить еще одну таблицу в этот микс. В этой новой таблице указана скидка, которая применяется к каждому ресурсу для каждого клиента. Кроме того, несколько строк могут ссылаться на одного и того же клиента и один и тот же ресурс. В таком случае все скидки должны суммироваться для определения общей скидки.
Например:
CUSTOMER: 1 RESOURCE: 1 DISCOUNT: 1
CUSTOMER: 1 RESOURCE: 1 DISCOUNT: 3
CUSTOMER: 1 RESOURCE: 2 DISCOUNT: 5
Итак, мы должны определить общую скидку на каждого клиента для каждого ресурса (это довольно легко сделать для меня). А затем используйте эту скидку в приведенном выше SQL и вычтите ее из CostPerUnit для этого конкретного ресурса при вычислении столбца TotalCost (надеюсь, это имеет смысл). Я пробовал все виды соединений, и я надеюсь, что кто-то здесь может помочь мне с этим. Буду признателен за любую оказанную помощь.
Спасибо!