我想从多个表中选择多个数据,因此我使用了连接来获取这些数据,并且根据这些数据,我希望有一组代码,并且每个代码的总数都是组合在一起的。我尝试将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
当我添加SUM
和MAX
以及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查询但是现在它出错了,我还在努力。
我希望有人可以指出查询中的错误。
答案 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