从同一个表中添加计算列

时间:2014-10-13 22:53:48

标签: sql sql-server

所以这就是事情:

我有一张名为Reward的表:

CustomerID OrderID OrderRewardPoints ExpireDate
    #1        1        55             2014-09-26#
    #1        2        145            2014-09-27#
    #2        3        70             2014-09-27#

我想添加一个RewardPoints列,它由所有不同的CustomerID计算,以及它们有多少OrderRewardPoints。

与CustomerID 1一样,他有两个OrderRewardPoints,因此他的新列是200。

通过使用select我可以得到结果,但我只是不知道如何添加为新列。

SELECT SUM (OrderRewardPoints) AS RewardPoints
FROM TABLE 
GROUP BY CustomerID

1 个答案:

答案 0 :(得分:1)

添加列:

alter table reward
add rewardpoints int;

填充列:

update reward t
   set rewardpoints =
       (select sum(x.orderrewardpoints)
          from reward x
         where x.customerid = t.customerid);

通过创建一个显示每个客户的总奖励积分的视图,而不是在奖励表中实际添加一列,这可能需要更新。

要做到这一点,你可以运行:

create view rewardtotals_vw as
select customerid, sum(orderrewardpoints) as rewardpoints
  from reward
 group by customerid