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')

このdesgination「1125」のみのカウントを取得しようとしているので、2回参照する必要があります。その特定のdesginationのみに寄付したドナーがいることがわかっている場合、何らかの理由でカウントがゼロになります。私が見逃しているのは愚かなことだと確信しています。

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」であるドナーが存在する可能性があります。したがって、レコードが存在するため、Notexistsは「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 

追加のフィルターフィールドは、選択リストとgroup byリストに追加され、次に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 に答える