SQL Server聚合提供不寻常的值

时间:2012-04-06 21:04:12

标签: sql-server tsql

我有两个查询来测试我的输出

SELECT DISTINCT( providerId ), 
               SUM(( claimCount )), 
               SUM(paidAmount), 
               SUM(provallowed), 
               SUM(patresp), 
               provId, 
               cliCode, 
               asctype, 
               payerid, 
               procCode 
FROM   TempCounts tt, 
       TempClient tct 
WHERE  ( tct.npi = tt.provid 
          OR tct.txcode = tt.provid ) 
       AND CLICODE = 'XXX' 
GROUP  BY tt.provid, 
          providerId, 
          cliCode, 
          asctype, 
          payerid, 
          procCode 

-

SELECT DISTINCT( providerid ), 
               claimCount, 
               paidamount, 
               provallowed, 
               patresp, 
               provid, 
               CLICODE, 
               asctype, 
               payerid, 
               proccode 
FROM   TempCounts tt, 
       TempClient tct 
WHERE  ( tct.npi = tt.provid 
          OR tct.txcode = tt.provid ) 
       AND CLICODE = 'XXX' 

总结第二个查询的未聚合结果应该在第一个查询中给出聚合值,但我的数据集最终会像 第一个数据集

15086   7   216.16  0.00    35.00   1609950203  XXX     216     72040
15086   7   227.36  0.00    21.00   1609950203  XXX     216     72070

第二个数据集

15086   1   30.88   0.00    5.00    1609950203  XXX     216     72040
15086   1   32.48   0.00    3.00    1609950203  XXX     216     72070

不能为我的生活看到我所缺少的东西,并且盯着它看这么长时间我的代码是盲目的。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

由于DISTINCT选项,两个数据集可能不同。

因此,unaggregated查询只返回有限数量的行,这些行彼此不同。

在第一个查询中,DISTINCT选项没用,因为结果中包含所有分组列。

答案 1 :(得分:0)

我终于明白了。因为tempClient表有多个基于npi和txcode字段的记录(即每个npi的记录可以有多个txcode实例。我以为我正在过滤,因为针对mysql的相同查询给出了正确的结果。解决方案是添加tt .npi和tt.txcode到groupby语句。