Я хочу попробовать обновить таблицу postgresql своими собственными значениями.
Эта таблица содержит обзор продуктов, проданных по годам и месяцам.
CREATE TABLE sales
(
sector character(3),
brand character(4),
product character(16),
syear integer,
smonth integer,
units_sold integer,
units_sold_year integer,
CONSTRAINT pk_sales_id PRIMARY KEY (sector, brand, product, syear, smonth)
);
INSERT INTO sales(sector, brand, product, syear, smonth, units_sold, units_sold_year) VALUES ('1', 'ABE', '71012', 2010, 0, 9, 0); /* The month 0 is the whole year */
INSERT INTO sales(sector, brand, product, syear, smonth, units_sold, units_sold_year) VALUES ('1', 'ABE', '71012', 2010, 1, 4, 0);
INSERT INTO sales(sector, brand, product, syear, smonth, units_sold, units_sold_year) VALUES ('1', 'ABE', '71012', 2010, 2, 5, 0);
INSERT INTO sales(sector, brand, product, syear, smonth, units_sold, units_sold_year) VALUES ('ALL', 'ABE', '71012', 2010, 0, 9, 10);
...
Я добавил столбец «units_sold_year», потому что мне нужно иметь возможность делать очень быстрые запросы к этой таблице (в противном случае мне пришлось бы делать подзапросы), и я пытаюсь заполнить его.
Вот запрос на обновление, который я создал до сих пор, но кажется, что он выполняется в бесконечном цикле:
UPDATE sales set units_sold_year = (SELECT units_sold_year FROM sales as s WHERE sector = 'ALL' and s.smonth = 0 and s.brand = su.brand and s.product = su.product and s.syear = su.syear)
FROM sales su
where su.syear = 2010
and su.brand = 'ABE' and su.product = '71012';
Можно ли обновить таблицу с ее собственными строками, как это?