有没有一种方法可以在不使用Initcap函数的情况下转换Oracle SQl中的首字母大写?

我有一个问题,我必须在SQL子句中使用DISTINCT关键字,而Initcap函数不起作用。

这是我的SQL示例:

select distinct p.nr, initcap(p.firstname), initcap(p.lastname), ill.describtion
from patient p left join illness ill
  on p.id = ill.id
where p.deleted = 0
order by p.lastname, p.firstname;


我收到此错误消息:ORA-01791:不是SELECTED表达式

最佳答案

SELECT DISTINCT时,不能选择未选中的ORDER BY列。改用列别名,例如:

select distinct p.nr, initcap(p.firstname) fname, initcap(p.lastname) lname, ill.describtion
from patient p left join illness ill
  on p.id = ill.id
where p.deleted = 0
order by lname, fname

10-04 20:15