單條SQL語句實現複雜邏輯的幾個例子(4)續~

junsansi發表於2008-04-18

接上~~

並不困難,只要對我們的sql稍加改動即可

JSSWEB> select ad1,nav from(

     2  select c.*,row_number() over(partition by ad1 order by ad2) rn from (

     3  select a.adddate ad1,

     4         a.addvalue av1,

     5         b.adddate ad2,

     6         b.addvalue av2,

     7         case

     8           when a.addvalue != 0 then

     9            a.addvalue

    10           when a.addvalue = 0 and b.adddate > a.adddate then

    11            b.addvalue

    12           when a.addvalue = 0 and b.adddate is null then

    13            first_value(b.addvalue) over(order by b.adddate desc nulls last)

    14           else

    15            0

    16         end nav

    17    from tmp4 a, tmp4 b

    18   where b.addvalue(+) != 0

    19   and b.adddate(+)>a.adddate

    20   order by 1

    21  ) c where nav!=0)where rn=1

    22  ;

 

AD1                         NAV

-------------------- ----------

2007-03-01                 3.64

2007-03-02                 3.64

2007-03-05                 3.64

2007-03-06                 3.82

2007-03-07                 3.47

2007-03-08                 3.47

2007-03-09                 4.01

2007-03-12                 4.01

2007-03-13                 4.01

2007-03-14                 4.21

2007-03-15                 4.12

2007-03-16                 4.12

2007-03-17                 4.12

怎麼樣,親自動手試試吧~~

==================================

檢視前三例:

例3:查詢員工ID:1000的實際工作月數

例2:查詢欄位a的值連續三條以上相同的記錄

例1:按指定規則生成指定商品指定年限銷售額

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-243690/,如需轉載,請註明出處,否則將追究法律責任。

相關文章