2013-10-05 195 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)