带有rowtotals的新列

时间:2013-12-16 09:37:58

标签: sql

我在实现以下结果方面遇到了一些麻烦。

这是我目前的表格:

ID       NR        COST
1       7001       100
2       7001       50
3       7020       800
4       7020       190
5       7050       205
6       7050       80

这是我想要实现的目标:

ID       NR        COST   TOTAL
1       7001       100     150
2       7001       50      150
3       7020       800     990
4       7020       190     990
5       7050       205     285
6       7050       80      285

所以我想创建一个额外的列,其中“NR”列的总和是。

我尝试使用SUM,但随后会花费整个成本列。

这是我目前的查询:

SELECT distinct id, nr, cost, sum(cost) as total
FROM customers
group by id, nr, cost

2 个答案:

答案 0 :(得分:2)

您可以使用子查询计算每个NR的总数,然后将其添加到原始结果中:

SELECT id, 
       nr, 
       cost, 
       A.subtotal AS TOTAL 
FROM   table1 
       INNER JOIN (SELECT nr, 
                          Sum(cost) AS subTotal 
                   FROM   table1 
                   GROUP  BY nr) AS A 
               ON table1.nr = A.nr 

答案 1 :(得分:1)

您可以使用汇总查询进行自我加入:

SELECT   id, mytalbe.nr, cost, total
FORM     mytable
JOIN ON  (SELECT    nr, SUM(cost) AS total
          FROM      mytable
          GROUP BY  nr) t ON t.nr = mytable.nr