0
[UNIT] [PRICE] [QUANTITY] [REVENUE]     [PERCENTAGE]
A      $10     25         $250           25%
B      $5      30         $150           15%
C      $20     30         $600           60%
Total Revenue             $1,000             100%

我正在尝试创建一个查询来计算 [PERCENTAGE] 列,这是我使用的:

UPDATE Table
SET [PERCENTAGE] = (PRICE*QUANTITY)/(sum(PRICE*QUANTITY)

这是错误消息:

聚合可能不会出现在 UPDATE 语句的集合列表中。

有什么建议吗?

感谢您的阅读。

4

2 回答 2

2
UPDATE
    t1 target
    CROSS JOIN t1 src
SET
    target.PERCENTAGE = target.PRICE * target.QUANTITY / 
(SELECT SUM(src.PRICE * src.QUANTITY))
于 2013-02-23T02:06:30.077 回答
0

我建议使用窗口函数和一个with子句来做到这一点:

with toupdate as (
      select t.*,
             sum(price*quantity) over () as total
      from t
     )
update toupdate
    set percentage = price*quantity / total;
于 2013-02-23T03:01:53.023 回答