web-dev-qa-db-ja.com

DISTINCTの結果、ORA-01791:SELECTed式ではありません

select DISTINCT a.FNAME||' '||a.LNAME
   from AUTHOR a, books B, BOOKAUTHOR ba, customers C, orders
   where C.firstname='BECCA'
      and C.lastname='NELSON'
      and a.AUTHORID=ba.AUTHORID
      and b.ISBN=bA.ISBN
   order by a.LNAME

oRA-01791:にはSELECT式ではなくDISTINCTなしで機能します。

動作させる方法は?

24
user490735

Select句でLNAMEを独自の列として追加するだけです。

SELECT full_name
FROM (
 select DISTINCT a.FNAME||' '||a.LNAME AS full_name, a.LNAME
 from AUTHOR a, books B, BOOKAUTHOR ba, customers C, orders
 where C.firstname='BECCA'
   and C.lastname='NELSON'
   and a.AUTHORID=ba.AUTHORID
   and b.ISBN=bA.ISBN
 )
order by a.LNAME

出力の最初の列のみが必要な場合は、すべてをサブクエリに入れることができます。

25
Jeffrey Kemp