2015-11-30 40 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爲什麼看起來更。 。 。這個答案中的查詢不應該產生那個特定的錯誤 –