使用sum和group在SQL中查询

时间:2017-08-07 07:58:16

标签: sql-server group-by sum max

我想从多个表中选择多个数据,因此我使用了连接来获取这些数据,并且根据这些数据,我希望有一组代码,并且每个代码的总数都是组合在一起的。我尝试将SUM()MAX()GROUP BY一起使用,但我怎么得到每个组的错误总和。

我的数据结果在没有sum和max和group时会显示如下:

查询是:

SELECT DISTINCT 
t17.acctcode,
(pcchrgamt)  
FROM 
hpatchrg AS t3 INNER JOIN 
hcharge AS t17 ON t3.chargcode = t17.chrgcode INNER JOIN
Codes AS t14 ON t17.uacs = t14.accCode

WHERE acctno = '2007-000025486'

结果是:

acctcode    pcchrgamt
613 RECORDS 56.00
613 RECORDS 60.00
631 CSR     56.00
631 CSR     60.00
631 CSR     74.00
631 CSR     88.40
643         2.00
643         3.00
643         4.00
643         6.00
643         8.75
643         10.00
643         11.40
643         39.75
643         40.00
643         41.60
643         44.00
643         47.10
643         49.00
643         50.50
643         80.00
643         80.50
643         88.00
643         96.00
643         100.00
643         106.35
643         109.95
643         132.00
643         192.00
643         878.50
643         2465.00
643         4930.00

当我添加SUMMAX以及GROUP BY时,代码如下:

SELECT DISTINCT 
t17.acctcode AS acctcode,
SUM(pcchrgamt) AS pcchrgamt  
FROM 
hpatchrg AS t3 INNER JOIN 
hcharge AS t17 ON t3.chargcode = t17.chrgcode INNER JOIN 
Codes AS t14 ON t17.uacs = t14.accCode

WHERE acctno = '2007-000025486'  
GROUP BY acctcode

结果是:

acctcode    pcchrgamt
631 CSR         4454.40
613 RECORDS     1856.00
643             20813073.75

分组是正确的,但总和是如此。我希望总和仅与613 RECORDS 116.00相似,但它已经过时了。我也试过Sub查询但是现在它出错了,我还在努力。

我希望有人可以指出查询中的错误。

1 个答案:

答案 0 :(得分:6)

乍一看,distinct之后是否可以在第二个查询中处理group by?尝试将其移动到子查询:

SELECT  acctcode
,       SUM(pcchrgamt)
FROM    (
        SELECT  DISTINCT t17.acctcode
        ,       pcchrgamt
        FROM    hpatchrg AS t3
        JOIN    hcharge AS t17 ON t3.chargcode = t17.chrgcode
        JOIN    Codes AS t14 ON t17.uacs = t14.accCode
        WHERE   acctno = '2007-000025486'
        ) sub
GROUP BY
        acctcode