不是Group By Expression,具有自己声明的函数

时间:2013-07-08 09:57:43

标签: oracle function group-by

好的,所以我知道在select语句中使用MAX,MIN,AVG等集合函数时。您需要对不使用聚合函数的所有选定列使用GROUP BY函数.EX

SELECT name, MAX(age)
FROM person
GROUP BY name

但我的问题是,当我对某些列使用自己的函数时,我在select语句中使用了Aggregate函数。 EX

SELECT f_fullname(name, surname) as fullname, max(age)
FROM person

我应该将整个函数作为group by子句的一部分添加吗?

GROUP BY f_fullname(name, surname)

因为此时我得到ORA-00979而不是GROUP BY表达式错误。

感谢您的帮助!

PS。 select语句仅用于解释目的**

1 个答案:

答案 0 :(得分:1)

您可以拥有整个功能,也可以使用作为参数的列。

select f_fullname(name , surname) full_name, max (age)
  from person
group by name, surname;

select f_fullname(name , surname) full_name, max (age)
  from person
group by f_fullname(name , surname);

Here is a sqlfiddle demo