1

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

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

我一辈子都看不到我错过了什么,盯着它看了这么久,我是代码盲。有什么建议么?

4

2 回答 2

3

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

因此,未聚合查询仅返回有限数量的行,这些行彼此不同。

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

于 2012-04-06T21:23:04.657 回答
0

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

于 2012-04-06T21:41:01.313 回答