SQL Server聚合和总和

时间:2013-08-21 17:55:56

标签: sql sql-server

有一个SQL查询的问题,似乎无法搞清楚。我很确定我错了。

基本上,我有PRVDR_NUM和ITM_VAL。我想总结相关的ITM_VALS,因此每个PRVDR_NUM只有一个“总结”ITM_VAL [SumReimb是别名]。

PRVDR_NUM实际上在另一个表中;我使用RPT_REC_NUM的内连接与它相关,它在两个表中。

这是一个非常不实用的例子。

SELECT  PRVDR_NUM,SUM(ITM_VAL) as SumReimb FROM hha2011num
INNER JOIN hha2011rpt ON hha2011num.RPT_REC_NUM = hha2011rpt.RPT_REC_NUM 
WHERE (WKSHT_CD='D000000' AND LINE_NUM = '01201') AND (CLMN_NUM='0100' OR CLMN_NUM='0200')

GROUP BY PRVDR_NUM,ITM_VAL ORDER BY ITM_VAL

我总结的主要是CLMN_NUM 0100和0200,每个都有不同的项目值,我想将它们加起来然后按PRVDR_NUM进行分组。

有什么建议吗?

我在SQL中遇到的主要问题是GROUP,Aggregates和Calculated字段。我不确定如何......把它们捆绑在一起。我两天前开始学习SQL。

编辑本线以下------------

这里有两个不同但应该是相同的查询。

SELECT  RPT_REC_NUM,SUM(ITM_VAL) SumReimb FROM hha2011num
WHERE (WKSHT_CD='D000000' AND LINE_NUM = '01201') AND CLMN_NUM in('0100','0200')

GROUP BY RPT_REC_NUM ORDER BY SumReimb

SELECT  PRVDR_NUM,SUM(ITM_VAL) as SumReimb FROM hha2011num
INNER JOIN hha2011rpt ON hha2011num.RPT_REC_NUM = hha2011rpt.RPT_REC_NUM 
WHERE WKSHT_CD='D000000' AND LINE_NUM = '01201' AND CLMN_NUM in('0100','0200')
GROUP BY PRVDR_NUM ORDER BY SumReimb

现在;它们之间的大多数数据都是相同的,除了一个数据比另一个数据多39个[Top one does]。这可能就是为什么第二个数据中的少数数据比我预期的要高几个数量级。

1 个答案:

答案 0 :(得分:2)

SELECT  PRVDR_NUM,SUM(ITM_VAL) as SumReimb FROM hha2011num
INNER JOIN hha2011rpt ON hha2011num.RPT_REC_NUM = hha2011rpt.RPT_REC_NUM 
WHERE WKSHT_CD='D000000' AND LINE_NUM = '01201' AND CLMN_NUM in('0100','0200')
GROUP BY PRVDR_NUM ORDER BY PRVDR_NUM

请从group by和order by子句中删除ITM_VAL。另外,我在where子句中做了一个小改动,而不是使用或检查列CLMN_NUM的值,你可以使用“IN”