2015-11-30 113 views
0

试图在oracle中编写视图11g
我希望此代码仅返回拥有的员工的第一个姓名和最后一个姓名。
但它不断给我的错误:“ORA-00979:不是GROUP BY表达式”查看未创建

create or replace view highesttotalcommission as (
    select * 
    from ( select e.firstname|| ' ' ||e.lastname "Highest commission" 
      from employee e 
      inner join salesperson sp 
      on e.employeeID = sp.employeeID 
      inner join salesinvoice si 
      on si.salespersonid = e.employeeID 
      group by si.salespersonid 
      order by SUM(si.price * sp.commissionpct) desc) 
    where ROWNUM = 1); 

回答

0

我认为错误是很明显的。您需要包括在select列或表达式在group by

create or replace view highesttotalcommission as 
    select * 
    from (select (e.firstname || ' ' || e.lastname) as "Highest commission" 
      from employee e inner join 
       salesperson sp 
       on e.employeeID = sp.employeeID inner join 
       salesinvoice si 
       on si.salespersonid = e.employeeID 
      group by si.salespersonid, e.firstname|| ' ' ||e.lastname 
      order by SUM(si.price * sp.commissionpct) desc 
     ) e 
    where ROWNUM = 1; 
+0

但是当我编辑的代码的东西,你应该能够按它仍然会返回错误 –

+0

@NedCharles为什么看起来更。 。 。这个答案中的查询不应该产生那个特定的错误 –