ORA-00918: column ambiguously defined錯誤應對方法

來源:互聯網
上載者:User

最近做一個項目,經常需要用到多表查詢,通過需要分頁等,於是經常會碰到

 

ORA-00918: column ambiguously defined錯誤應對方法,意思是說,某一列定義模糊,於是

 

經過了很多方面的測試,總算能解決,尤其是在涉及到tablename.*,這裡的*很容易出現這樣的錯誤。

 

需要仔細的研究下面的2個sql語句:

 


select v1.*,(v1.data-v2.data) as rate, v3.*, (v3.data-v4.data) as rate2

from (

     select rownum as rn, a.* from (

          select ayearmon, DATA, DATA-100 as rate

          from test

          where isvalid=1 and code='3503' 

                         and region = '000000'

          order by ayearmon desc

     ) a) v1,

   (

   select (rownum-1) as rn1, b.* from (

           select ayearmon, DATA

           from test

           where isvalid=1 and code='3503' 

                         and region = '000000'

           order by ayearmon desc                       

     ) b) v2, 

    ( select rownum as rn, c.* from (

          select ayearmon, DATA, DATA-100 as rate

          from test

          where isvalid=1 and code='3502' 

                         and region = '000000'

          order by ayearmon desc

     ) c) v3,

   (

   select (rownum-1) as rn1, d.* from (

           select ayearmon, DATA

           from test

           where isvalid=1 and code='3502' 

                         and region = '000000'

           order by ayearmon desc                       

     ) d) v4 

where v1.rn = v2.rn1 and v3.rn = v4.rn1 and v1.rn = v3.rn

and v1.rn >= 1 and v1.rn <= 10

 

 

 

select * from (

  select v1.*, CASE WHEN substr(v1.ayearmon, 5, 2) = '02' THEN v1.DATA ELSE (v1.DATA - v2.DATA)  END  as dy

        from (

             select rownum as rn, a.* from (

                  select ayearmon, DATA

                  from v_yy_MAC201 

                  where isvalid=1 and code='10011001' and length(ayearmon) = 6

                                and timetype='b0301' and region = '000000'

                  order by ayearmon desc

             ) a) v1,

           (

           select (rownum-1) as rn1, b.* from (

                   select ayearmon, DATA

                   from v_yy_MAC201

                   where isvalid=1 and code='10011001' and length(ayearmon) = 6

                                and timetype='b0301' and region = '000000'

                   order by ayearmon desc                       

             ) b) v2 where v1.rn = v2.rn1

)          

where rn >= 1 and rn <= 50

 

 

通過上面的2個sql,能不能發現什麼規律呢?

 

有空繼續討論。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.