Oracle计数(不同的expr)导致ORA-00979错误
我有以下疑问:Oracle计数(不同的expr)导致ORA-00979错误,oracle,ora-00979,Oracle,Ora 00979,我有以下疑问: SELECT t.f1 , COUNT(DISTINCT t.f2) AS distinct_count FROM some_table t GROUP BY t.f1 这很好用。 然而,如果我尝试这样做,它会给我一个ORA-00979,而不是一个groupby表达式错误 WITH my_aggregate_data AS ( SELECT t.f1 , COUNT(DISTINCT t.f2) AS distinct_co
SELECT
t.f1
, COUNT(DISTINCT t.f2) AS distinct_count
FROM
some_table t
GROUP BY
t.f1
这很好用。
然而,如果我尝试这样做,它会给我一个ORA-00979,而不是一个groupby表达式
错误
WITH my_aggregate_data AS
(
SELECT
t.f1
, COUNT(DISTINCT t.f2) AS distinct_count
FROM
some_table t
GROUP BY
t.f1
)
SELECT
*
FROM
( SELECT f1, distinct_count FROM my_aggregate_data )
PIVOT
(
SUM(distinct_count)
FOR f1
IN (a, b, c)
)
如果我简单地从COUNT
方法中删除DISTINCT
关键字,它可以正常工作(除了计数是一个总计数而不是一个DISTINCT计数)
这似乎是一个相当直截了当的查询,但我一直无法找到记录此问题的任何其他人(这可能意味着我做错了什么)
我在Oracle文档中也没有发现任何东西表明COUNT(DISTINCT exp)
的行为与COUNT(exp)
不同,除了两者之间的明显区别
我也是这样写的
SELECT
*
FROM
(
SELECT
t.f1
, COUNT(DISTINCT t.f2) AS distinct_count
FROM
some_table t
GROUP BY
t.f1
)
PIVOT
(
SUM(distinct_count)
FOR f1
IN (a, b, c)
)
但是它只会导致相同的ORA-00979错误,而且,如果您删除
DISTINCT
关键字,一切都会正常工作(除了它给了我错误的答案)。我没有您的示例数据和实际查询,因此无法确定为什么会提出ORA-00979。但是,就您发布的查询而言,问题出在您的PIVOT
表达式中,其他什么都没有
IN (a, b, c)
这就抛出了错误
ORA-56901:pivot | unpivot不允许使用非常量表达式
价值观
这意味着PIVOT
的子句中指定的值应为常量(字符串文字/数字等)
如果你使用
IN ('a', 'b', 'c')
它工作得非常好
请查看此项以查看错误消息和工作查询