读书人

这才是坑爹 刚才那个不是最坑爹的,该如

发布时间: 2012-05-27 05:42:30 作者: rapoo

这才是坑爹 刚才那个不是最坑爹的

SQL code
create table B(name number,what   varchar(20),place  varchar(20),tim    date,money  number,last   number,primary key(name,place,tim))SQL> select * from B;       NAME WHAT                 PLACE                TIM              MONEY   Last---------- -------------------- -------------------- ----------- ----------  ----------         1 1                    超市                 2012/4/13           12         1 1                    超市                 2012/4/11           13         1 0                    超市                 2012/4/10           14         2 1                    学校                 2012/4/7            16         2 1                    学校                 2012/4/16           31         2 1                    学校                 2012/4/26           12 6 rows selected

是某人去某地买东西

last=同一个人前面一个日期在同一个地方买的东西的钱,不为0不为空的数据,what=0的数据不算在内
更新last的值
性能有要求

[解决办法]
标题党的嫌疑。。。
[解决办法]
根据你要的结果排序,偏移一位应该就OK吧
[解决办法]
标题党。
[解决办法]
SQL> update b set last=
2 (select max(a.money) from b a where a.tim < b.tim and a.what is not null and a.what <> 0 and b.name=a.name)
3 /

6 rows updated

SQL> select * from b;

NAME PLACE TIM WHAT MONEY LAST
---------- -------------------- ----------- -------------------- ---------- ----------
1 超市 2012/4/13 1 12 13
1 超市 2012/4/11 1 13
1 超市 2012/4/10 0 14
2 学校 2012/4/7 1 16
2 学校 2012/4/16 1 31 16
2 学校 2012/4/26 1 12 31

6 rows selected

读书人网 >oracle

热点推荐