我有以下查询:
SELECT
t.f1
, COUNT(DISTINCT t.f2) AS distinct_count
FROM
some_table t
GROUP BY
t.f1
效果很好。但是,如果我尝试这样做,它会给我一个ORA-00979 not a GROUP BY expression
错误。
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)
)
如果我只是DISTINCT
从方法中删除关键字COUNT
,它就可以正常工作(除了计数是总计数而不是不同的计数)。
这似乎是一个相当直接的查询,但我无法找到记录此问题的其他任何人(这可能意味着我做错了什么)。
除了两者之间的明显区别外,我在 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
关键字,一切正常(除了它给了我错误的答案)。