0

我是 SQL 新手,并且已经在这段代码上停留了几天。

select distinct Count( AGVGLST.AGVGLST_PIDM ) "Count_AGVGLST_PIDM",
       Count( (select distinct pidm
       from donor
       where donor.pidm = agvglst_pidm
       and donor.cfae_cat IN ('ALMB','ALMX')) ) "Cfae"
  from AGVGLST
 where AGVGLST.AGVGLST_DESG ='1125'
       and AGVGLST.AGVGLST_FISC_CODE ='2010'
       and not exists(select 'x'
       from agvglst b
       where b.agvglst_pidm = agvglst_pidm
       and b.agvglst_desg <> '1125'
       and b.agvglst_fisc_code = '2010')

我正在尝试仅获取此目标“1125”的计数,因此我需要引用它两次,并且由于某种原因,当我知道有捐赠者仅向该特定目标捐赠时,我的计数为零。我确信这是我想念的愚蠢的东西。

4

3 回答 3

1
   not exists(select 'x'
   from agvglst b
   where b.agvglst_pidm = agvglst_pidm
   and b.agvglst_desg <> '1125'
   and b.agvglst_fisc_code = '2010')

可能是这在这里造成了问题。可以有指定不是“1125”但agvglst_fisc_code 是“2010”的捐助者。因此,由于存在记录,您的不存在限制了“1125”的计数。

于 2013-03-14T13:10:40.117 回答
0

当本应简单的事情开始变得过于复杂时;是时候备份并重新开始了:

select 
  AGVGLST_DESG,
  coun(*) as "Count_AGVGLST_PIDM"
from AGVGLST
where AGVGLST_DESG = '1125'
group by 
  AGVGLST_DESG 

任何其他过滤器字段都将添加到选择列表和分组列表中,然后添加到 where 子句中。

于 2013-03-14T13:11:01.730 回答
0

如果你运行这个查询呢?

SELECT 
    COUNT(a.AGVGLST_PIDM) "Count_AGVGLST_PIDM",
FROM AGVGLST a
WHERE 
    a.AGVGLST_DESG      = '1125'
AND a.AGVGLST_FISC_CODE = '2010'
AND NOT EXISTS(
            SELECT 'x'
            FROM 
                agvglst b
            WHERE b.agvglst_pidm = a.agvglst_pidm
            AND b.agvglst_desg <> '1125'
            AND b.agvglst_fisc_code = '2010'
        )
于 2013-03-14T13:34:24.763 回答