Sql server 使用sum和group在SQL中进行查询
我想从多个表中选择多个数据,所以我使用join来获取这些数据,从这些数据中,我希望有一组代码,并有一组在一起的每个代码的总数量。我尝试将Sql server 使用sum和group在SQL中进行查询,sql-server,group-by,sum,max,Sql Server,Group By,Sum,Max,我想从多个表中选择多个数据,所以我使用join来获取这些数据,从这些数据中,我希望有一组代码,并有一组在一起的每个代码的总数量。我尝试将SUM()与MAX()和groupby一起使用 当不涉及求和、最大值和组时,我的数据结果如下所示: 查询是: SELECT DISTINCT t17.acctcode, (pcchrgamt) FROM hpatchrg AS t3 INNER JOIN hcharge AS t17 ON t3.chargcode = t17.chrgcode INN
SUM()
与MAX()
和groupby
一起使用
当不涉及求和、最大值和组时,我的数据结果如下所示:
查询是:
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
acctcode pcchrgamt
631 CSR 4454.40
613 RECORDS 1856.00
643 20813073.75
结果是:
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
acctcode pcchrgamt
631 CSR 4454.40
613 RECORDS 1856.00
643 20813073.75
当我将SUM
和MAX
和分组依据
放入时,代码如下所示:
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
结果是:
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
acctcode pcchrgamt
631 CSR 4454.40
613 RECORDS 1856.00
643 20813073.75
分组是正确的,但总和太小了。我预计只有613条记录的总和才是116.00
,但这是远远不够的。我也尝试过使用子查询,但现在它出现了错误,我仍在处理它
我希望有人能指出查询中的错误。一目了然,第二次查询中的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
我刚试过你的代码,我想我得到了正确的总和。你能进一步解释一下我想了解你做了什么,还有什么是sub
,如果有一些解释的话会很有帮助。这是因为DISTINCT
只在计算了sum
之后才应用,在连接中的某个地方
会得到16个匹配项sub
是子查询的名称。它未使用,但SQL Server需要它。尝试运行带有和不带有distinct
的查询以查看差异。我想向上查询,但它说我不能。我现在只勾选它,当我可以解释时再向上查询。谢谢。@Manlapig:看起来你需要向上投票