2013-10-05 193 views
0

我對錶有一個簡單的查詢:COUNT返回NULL,應返回0

Person id Organization id employee_nam age busines_group_id 
123  Zuyo   10  John  30 81 
2457  Zuyo   10  Geet  69 81 
56  Ghiya  12  paul  20 81 
      frei   13     81 

SELECT 
    COUNT(DISTINCT ped.person_id) 
FROM 
    per_emp_detail ped 
WHERE 
    ped.business_group_id = 81 
    AND 
    ped.id = NVL(p_org_id, ped.organization_id); 

SELECT 
    NVL(COUNT(DISTINCT ped.person_id), 0) 
FROM 
    per_emp_detail ped 
WHERE 
    ped.business_group_id = 81 
    AND 
    ped.id = NVL(p_org_id, ped.organization_id); 

p_org_id是我傳遞了ID的參數可以是10,12,或13 COUNT返回2 10. 1爲id 12,但返回NULL爲id 13. 我想0在這種情況下返回。

NVLCASE也不起作用。

+0

'NVL(計數(不同ped.person_id),0)' – Laurence

+0

它不工作。我試過了。 –

+5

'count()'不能返回null。大概這是PL/SQL或者'p_org_id'沒有意義,那麼這實際上是你的代碼 - 你是否已經移除了'into'部分,或者它是一個遊標?無論哪種方式顯示其他代碼可能會揭示如何使用它的問題。你的列名看起來有點奇怪,所以也許發佈實際的表定義。 –

回答

1

嘗試MAX:

nvl(max(count(DISTINCT ped.person_id)),0)