2015-11-16 27 views
0

我正在构建一个相当大的制表数据集。在这些数据中,我将员工及其接受总数与公司总体总数进行比较。我遇到问题,因为我正在使用CTE,我的一个表达式计算特定项目的数量。计数不会返回任何结果,并且通过在最终查询中包含此表达式使整个结果集为空。我敢肯定,我失去了一些东西简单在这里:带空白表达式的CTE

... 
COMPANY_TOTAL_A(A) AS 
(
SELECT NVL(COUNT(ITEM),0) 
FROM COMPANY_TOTALS_FINAL 
WHERE ITEM = 'A' 
GROUP BY ITEM 
), 
... 

该查询返回什么,当我在最后的查询使用它的整个结果集为空。如果我排除它,那么我会得到我期待的所有行。它看起来像这样?

SELECT DISTINCT C.ID, 
C.NAME, 
P.LOCATION, 
... 
NVL(T.A, 0) 
... 
FROM COMPANY C 
INNER JOIN PLACE P 
ON P.P_ID = C.P_ID, 
... 
COMPANY_TOTAL_A T; 

随着t这值是适用于所有员工我预期只返回公司共为当产品在A类。即使那是0我以为0会被返回?

回答

2

按照您指望的同一列进行分组毫无用处。你想要一个简单的:

SELECT count(*) 
FROM company_totals_final 
WHERE item = 'A' 

count(item)计数所有行项目不为空,但病情会ITEM = 'A'将反正已经删除这些行。所以它也不是必需的。