请教一个SQL语句写法

lyj851011 2012-02-18 12:18:40
表中有三列数据如下。每个Code都有对应的每年365天的数据,在这里只截选若干。
我想实现的需求是:按照Code分组,针对每个Code的每条当前记录,都往前追溯查找60天,在这个60天的时间区间内,判断当前行的Number是否是60天中最大的6个Number之一(排在最大前6位)。请教各位如何实现,多谢!!

Date Code Number
19860416 TWEN 58992
19860417 TWEN 34700
19860418 TWEN 171123
19860419 TWEN 205239
19860420 TWEN 73000
19860421 TWEN 92216
19860422 TWEN 60700
19860324 XYZ 27306
19860325 XYZ 33600
19860326 XYZ 12607
19860327 XYZ 63013
19860328 XYZ 42674
19860329 XYZ 139275
19860330 XYZ 46708
19860331 XYZ 18170
19870401 XYZ 18170
19870402 XYZ 18170
19870403 XYZ 10535
19870404 XYZ 10535
19870405 XYZ 212410
19870406 XYZ 51900
19870407 XYZ 13020
...全文
183 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyj851011 2012-02-20
  • 打赏
  • 举报
回复
多谢各位!!!
ICE-word 2012-02-20
  • 打赏
  • 举报
回复
SELECT case code IN (SELECT * FROM TABLEname t1 WHERE ROWNUM >6) THEN NUMBER END NULL FROM tablename t WHERE add_months (DATE,-2)
我心飞翔 2012-02-20
  • 打赏
  • 举报
回复
就是查找最大的6个Number罢。

实测数据:(已经修改)

CREATE TABLE T128
(
MyDate VARCHAR2(20),
CODE VARCHAR2(20),
MyNumber NUMBER
);

INSERT INTO T128 VALUES('19870401', 'TWEN', 58992);
INSERT INTO T128 VALUES('19870402', 'TWEN', 34700);
INSERT INTO T128 VALUES('19870403', 'TWEN', 171123);
INSERT INTO T128 VALUES('19870404', 'TWEN', 205239);
INSERT INTO T128 VALUES('19870405', 'TWEN', 73000);
INSERT INTO T128 VALUES('19870406', 'TWEN', 92216);
INSERT INTO T128 VALUES('19870407', 'TWEN', 60700);

INSERT INTO T128 VALUES('19860324', 'XYZ', 27306);
INSERT INTO T128 VALUES('19860325', 'XYZ', 33600);
INSERT INTO T128 VALUES('19860326', 'XYZ', 12607);
INSERT INTO T128 VALUES('19860327', 'XYZ', 63013);
INSERT INTO T128 VALUES('19860328', 'XYZ', 42674);
INSERT INTO T128 VALUES('19860329', 'XYZ', 139275);
INSERT INTO T128 VALUES('19860330', 'XYZ', 46708);
INSERT INTO T128 VALUES('19860331', 'XYZ', 18170);
INSERT INTO T128 VALUES('19870401', 'XYZ', 18170);
INSERT INTO T128 VALUES('19870402', 'XYZ', 18170);
INSERT INTO T128 VALUES('19870403', 'XYZ', 10535);
INSERT INTO T128 VALUES('19870404', 'XYZ', 10535);
INSERT INTO T128 VALUES('19870405', 'XYZ', 212410);
INSERT INTO T128 VALUES('19870406', 'XYZ', 51900);
INSERT INTO T128 VALUES('19870407', 'XYZ', 13020);


实测结果:

mingchaoyan 2012-02-19
  • 打赏
  • 举报
回复
初初看,是个组内排序的问题

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧