Я видел много вопросов по этому вопросу, но не могу заставить это работать.Я хочу ОБНОВИТЬ несколько столбцов в таблице (но начну с одного) на основе вычисленного значения из той же таблицы.
Это список транзакций на одного клиента в месяц.
TransID | Cust | Month | Value | PastValue | FutureValue
1 | 1 | 2018-01-01 | 45 |
2 | 1 | 2018-02-01 | 0 |
3 | 1 | 2018-03-01 | 35 |
4 | 1 | 2018-04-01 | 80 |
.
UPDATE tbl_transaction a
SET PrevMnthValue =
(SELECT COUNT(TransactionID) FROM tbl_transaction b WHERE b.Cust=a.Cust AND b.Month<a.Month)
Но мы получаем страшное: «Не удается обновить таблицу с помощью оператора where с подзапросом к той же таблице).
Я пытался вложить подзапрос, как этотбыл объявлен как обходной путь:
UPDATE tbl_transactions a
SET
PastValue =
(
SELECT CNT FROM
(
SELECT
COUNT(TransactionID) AS CNT
FROM tbl_transactions b
WHERE
b.CustomerRef=a.CustomerRef AND b.Month<a.Month
) x
),
FutureValue =
(
SELECT CNT FROM
(
SELECT
COUNT(TransactionID) AS CNT
FROM tbl_transactions b
WHERE
b.CustomerRef=a.CustomerRef AND b.Month>a.Month
) x
)
Но я получаю НЕИЗВЕСТНЫЙ a.CustomerRef в предложении WHERE.Куда я иду не так?