ВСТАВЬТЕ столбец в таблицу с помощью SUM и GROUP BY - PullRequest
0 голосов
/ 29 апреля 2020

Каков наилучший подход для вставки вычисляемого столбца, сгруппированного по идентификатору, в другой столбец, в котором этот идентификатор совпадает?

У меня есть этот запрос:

SELECT DISTINCT cs.customerNumber, cs.totalOrderCost as paymentDue, 
       SUM(p.amount) as paymentMade 
FROM customerSales cs LEFT OUTER JOIN payments p 
          ON cs.customerNumber = p.customerNumber 
GROUP BY cs.customerNumber;

, который возвращает customerNumber, paymentDue , paymentMade, рассчитывается правильно.

В таблице customerSales есть два столбца: customerNumber и totalOrderCost. Я хочу добавить столбец "paymentMade" (суммированный из столбца платежей и сгруппированный по customerNumber) в таблицу customerSales.

Этот подход:

ALTER TABLE customerSales 
    ADD COLUMN paymentMade DECIMAL; 
INSERT INTO customerSales(paymentMade) 
SELECT SUM(p.amount) as paymentMade 
FROM payments p 
GROUP BY p.customerNumber; 

выдает ошибку "Поле customerNumber hasn не имеет значения по умолчанию ".

Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2020

после того, как вы добавили столбец в схему таблицы

 ALTER TABLE customerSales ADD COLUMN paymentMade DECIMAL;  

, вы должны использовать обновление, основанное на подэриуме

    update  customerSales  
    INNER JOIN (
        SELECT DISTINCT cs.customerNumber
        , cs.totalOrderCost as paymentDue
        , SUM(p.amount) as paymentMade 
        FROM customerSales cs 
        INNER JOIN payments p ON cs.customerNumber = p.customerNumber 
        GROUP BY cs.customerNumber
    ) t  ON customerSales.customerNumber =t.customerNumber
    set paymentMade = t.paymentMade
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...