SQL - 如何获取列和该列值的总和作为查询结果

时间:2017-09-17 19:03:00

标签: sql sql-server

我有一个复杂的存储过程,它使用数值计算列,并将其作为包含其他列的数据集的一部分返回。我试图找到一种方法在同一个查询中返回该特殊列的SUM。我使用SQL Management Studio,并考虑使用OUT参数甚至RETURN值。但如果有更多的SQL-ish方法,那肯定会更喜欢它。

SELECT  
    OrID, QN, PRID, PCKID, Person, Price, CSID,
    CASE 
       WHEN (COUNT(*) OVER (PARTITION BY OrID)) > 1   
          THEN Price * 0.2   
          ELSE Price * 0.1   
    END AS Commission 
FROM   
    ( < my subquery > )

我还想将SUM(Commission)添加到上述声明的结果中。

如果我的数据是(部分)

OrID|Price
----+-----
 1  | 100 
 2  | 100 
 2  | 50 
 3  | 80

我将得到以下结果

OrID|Price|Commission
----+-----+----------
 1  | 100 |  10
 2  | 100 |  20
 2  | 50  |  10
 3  | 80  |   8

在某个地方,我也希望看到最后一栏的总和 - 48
SUM

末尾的Excel Commission函数

2 个答案:

答案 0 :(得分:1)

您可以使用子查询:

SELECT s.*, SUM(Commission) OVER (PARTITION BY OrId) as sum_commission
FROM (SELECT OrID, QN, PRID, PCKID, Person, Price, CSID
             (CASE WHEN (count(*) OVER (PARTITION BY OrID)) > 1
                   THEN Price*0.2
                   ELSE Price*0.1
              END) AS Commission
      FROM (< my subquery >
           ) s
     ) s;

我假设你想要OrId。如果不删除partition by

答案 1 :(得分:0)