Man*_*pig 2 sql-server group-by sum max
我想从多个表中选择多个数据,因此我使用join来获取这些数据,并且根据这些数据,我希望有一组代码,并且每个代码的总数都是组合在一起的.我尝试使用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'
Run Code Online (Sandbox Code Playgroud)
结果是:
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
Run Code Online (Sandbox Code Playgroud)
当我把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
Run Code Online (Sandbox Code Playgroud)
结果是:
acctcode pcchrgamt
631 CSR 4454.40
613 RECORDS 1856.00
643 20813073.75
Run Code Online (Sandbox Code Playgroud)
分组是正确的,但总和是如此.我希望总和只是为了613 RECORDS是,116.00但它是远离.我也试过Sub查询但是现在它出错了,我还在努力.
我希望有人可以指出查询中的错误.
一目了然,可以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
Run Code Online (Sandbox Code Playgroud)