2013-03-14 91 views
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」,所以我需要引用了兩遍,由於某種原因,我得到零個計數,當我知道還有誰捐贈只是特定desgination捐助者。我相信這是我失蹤的愚蠢。

+0

哪個rdbms好嗎? SQL服務器? – Sebas 2013-03-14 13:06:43

+0

此外,你指望這些傢伙,但誰也沒有給任何其他指定任何東西比1125,所以也許這就是你的計數返回0的原因。它可能會清理一些樣本數據。 – Sebas 2013-03-14 13:08:46

+0

sql server.That是對的,我只想計數那些給1125而不是其他任何東西。我確實有數據,我知道捐助者在給定的財政年度只給了1125。所以我知道0是不正確的。 – user2169875 2013-03-14 13:27:32

回答

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

謝謝,這似乎工作通過給其他表一個別名。 – user2169875 2013-03-14 13:51:07

+0

等一下,我的意思是,我改變了你的查詢,還有一部分丟失了。你不需要選擇其他計數結果嗎? – Sebas 2013-03-14 13:53:10

+0

我添加了其他部分,它的工作。非常感激 – user2169875 2013-03-14 14:04:55

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'的計數。

0

當應該是簡單的事情開始變得太複雜了;它的時間來備份和重新開始:

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

任何額外的過濾器字段被添加到選擇列表,並通過列表中的組,然後tothe where子句。