空白表达式的 CTE
CTE with blank expressions
我正在构建相当大的表格数据集。在这个数据中,我有员工和他们接受的总计与公司总计的对比。我在使用 CTE 时遇到问题,并且我的一个表达式计算特定项目的数量。计数 return 没有任何意义,通过在最终查询中包含此表达式,整个结果集将变为空白。我确定我在这里遗漏了一些简单的东西:
...
COMPANY_TOTAL_A(A) AS
(
SELECT NVL(COUNT(ITEM),0)
FROM COMPANY_TOTALS_FINAL
WHERE ITEM = 'A'
GROUP BY ITEM
),
...
这个查询 return 什么都没有,当我在最终查询中使用它时,整个结果集都是空白的。如果我排除它,那么我会得到我期望的所有行。看起来像这样?
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;
由于此值与所有员工相关,我预计它只是 return 公司总计 class A
。即使那是 0 我认为 0 会被 returned?
按您所指望的同一列分组是没有用的。你想要一个简单的:
SELECT count(*)
FROM company_totals_final
WHERE item = 'A'
count(item)
计算 item 不为 null 的所有行,但条件 ITEM = 'A'
无论如何都会删除这些行。所以也不需要。
我正在构建相当大的表格数据集。在这个数据中,我有员工和他们接受的总计与公司总计的对比。我在使用 CTE 时遇到问题,并且我的一个表达式计算特定项目的数量。计数 return 没有任何意义,通过在最终查询中包含此表达式,整个结果集将变为空白。我确定我在这里遗漏了一些简单的东西:
...
COMPANY_TOTAL_A(A) AS
(
SELECT NVL(COUNT(ITEM),0)
FROM COMPANY_TOTALS_FINAL
WHERE ITEM = 'A'
GROUP BY ITEM
),
...
这个查询 return 什么都没有,当我在最终查询中使用它时,整个结果集都是空白的。如果我排除它,那么我会得到我期望的所有行。看起来像这样?
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;
由于此值与所有员工相关,我预计它只是 return 公司总计 class A
。即使那是 0 我认为 0 会被 returned?
按您所指望的同一列分组是没有用的。你想要一个简单的:
SELECT count(*)
FROM company_totals_final
WHERE item = 'A'
count(item)
计算 item 不为 null 的所有行,但条件 ITEM = 'A'
无论如何都会删除这些行。所以也不需要。