как суммировать данные за последние 12 месяцев в объединенной таблице - PullRequest
0 голосов
/ 18 января 2019

У меня есть две объединенные таблицы: клиенты и заказы, которые связаны между собой CustomerPK.

В рассказе о клиенте я пытаюсь суммировать общие расходы каждого клиента (принимая сумму от объединения до таблицы заказов), а затемтакже рассчитать последние 12 месяцев, потраченные на этого клиента, это последняя строка, которая не работает, вот мой код:

SELECT
customers.CustomerPk,
customers.CustomerCode,
customers.CustomerName,
customers.AddressLine1,
customers.AddressLine2,
customers.AddressLine3,
customers.AddressLine4,
customers.AddressLine5,
customers.Town,
customers.County,
customers.PostCode,
customers.Country,
SUM(orders.OrderValue) AS `Total Spend`,
SUM(orders.OrderValue) WHERE orders.OrderDate >= curdate() - interval 1 year as `Last 12 Month Spend`
FROM customers
LEFT OUTER JOIN orders ON customers.CustomerPk = orders.CustomerFk
GROUP BY customers.CustomerPk, customers.CustomerCode, customers.CustomerName, customers.AddressLine1, customers.AddressLine2, customers.AddressLine3, customers.AddressLine4, customers.AddressLine5, customers.Town, customers.County, customers.PostCode, customers.Country

Таблица работала, пока я не добавил следующую строку: SUM (orders.OrderValue) WHERE orders.OrderDate> = curdate () - интервал 1 год как Last 12 Month Spend

Мне нужно, чтобы этот оператор WHERE применялся только к этой строке, а не ко всей таблице, поскольку она удалит результаты.

Большое спасибо заранее

1 Ответ

0 голосов
/ 18 января 2019

Вы не можете добавить предложение WHERE в столбец. Но если вы хотите суммировать только значения, для которых выполняется условие, вы можете использовать выражение CASE в sum(). Если ваше условие выполнено, верните значение, которое должно быть добавлено к сумме. В противном случае верните ноль - сумма не изменится, если вы добавите ноль.

...
sum(CASE
      WHEN orders.orderdate >= curdate() - interval 1 year THEN
        orders.ordervalue       
      ELSE
        0
    END) `Last 12 Month Spend`
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...