在oracle 9i以上的版本可以这样写:
with table_alias as
(select * from table_name) 
select * from table_alias;这样写的好处是在不能用视图的情况下,避免重复的SQL语句。
不知道在8i下怎么写。请教

解决方案 »

  1.   

    select * from (select * from table_name)  table_alias
    这样不就行了
      

  2.   

    这样当然可以了,可是如果(select * from table_name)括号里面很长,又需要在多个地方用到那不是要写很长的SQL了
      

  3.   

    这样?
    select a.* from A,B,C,
    (select * from table_name) t
    where a.id = t.id and b.id = t.id and c.id = t.id
      

  4.   

    不是。
    比如:
    SELECT *
    FROM ( 
        SELECT 
           field1,field2,field3.... 
           SUM(T.amount) amount,       
           CAST(MULTISET(SELECT E.x FROM aa_ppltest e WHERE e.field=T.field) AS List_Type) xxx,
           FROM aa_ppltest T 
         WHERE T.filed IS NOT NULL 
         GROUP BY
          field1, field2, field3....
    ); 
      

  5.   

    SELECT  
           field1,field2,field3....  
           SUM(T.amount) amount,        
           CAST(MULTISET(SELECT E.x FROM aa_ppltest e WHERE e.field=T.field) AS List_Type) xxx, 
           FROM aa_ppltest T  
         WHERE T.filed IS NOT NULL  
         GROUP BY 
          field1, field2, field3.... 
    把这一堆设成一个字符串变量行不行?