oracle 通过条件输出多条

恶魔爱谁 2014-08-11 10:53:06
各位大神。
我现在有一张有较多字段而且数据量超过百万条的表,里面有个字段gradecode。我想做到如果gradecode大于10就减1,输出一行。直到gradecode小于10,停止输出。唯一键为id。也就是说如果我有3条数据,其中的gradecode为13,14,10,需要输出10条完整字段的数据。求解救啊!
...全文
143 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
恶魔爱谁 2014-08-11
  • 打赏
  • 举报
回复
不好意思啊 前面看错了。因为查的a.*。把a和b的gradecode搞混了 不好意思啊
bw555 2014-08-11
  • 打赏
  • 举报
回复
是不是非得写成这样才能看懂啊,就一点不知道变通吗? 前几年回帖都是只要给出思路就够了,现在给出基本代码都不行,真头疼
select A.ID,B.CODE AS gradecode,A.XXXXX--表的其他字段
from T A,(SELECT ROWNUM+9 CODE FROM DUAL CONNECT BY ROWNUM+9<=
    (SELECT MAX(gradecode) FROM T))B
WHERE A.gradecode>=B.CODE
ORDER BY A.ID,B.CODE
bw555 2014-08-11
  • 打赏
  • 举报
回复
自己建结构测试了下,没什么问题啊 表T 字段 N 4条记录10~13 测试语句
select A.*,B.CODE AS gradecode
from T A,(SELECT ROWNUM+9 CODE FROM DUAL CONNECT BY ROWNUM+9<=
    (SELECT MAX(N) FROM T))B
WHERE A.N>=B.CODE
ORDER BY N,B.CODE
测试结果 N gradecode 10.00 10 11.00 10 11.00 11 12.00 10 12.00 11 12.00 12 13.00 10 13.00 11 13.00 12 13.00 13
恶魔爱谁 2014-08-11
  • 打赏
  • 举报
回复
改成a.gradecode后,数据还是没变啊,感觉要用curor啊
bw555 2014-08-11
  • 打赏
  • 举报
回复
select A.ID,B.CODE AS gradecode
from T A,(SELECT ROWNUM+9 CODE FROM DUAL CONNECT BY ROWNUM+9<=
    (SELECT MAX(gradecode) FROM T))B
WHERE A.gradecode>=B.CODE
bw555 2014-08-11
  • 打赏
  • 举报
回复
引用 3 楼 u011347604 的回复:
运行以后输出的gradecode行数对了,但是数值都一样啊,这样变成重复数据了。我想要的是,比如gradcode是13,输出的四行数据gradecode分别为10,11,12,13.其他内容相同呀
用B.CODE 替换A.gradecode就行了
select A.ID,B.CODE AS gradecode
from T A,(SELECT ROWNUM+9 FROM DUAL CONNECT BY ROWNUM+9<=
    (SELECT MAX(gradecode) CODE FROM T))B
WHERE A.gradecode>=B.CODE
恶魔爱谁 2014-08-11
  • 打赏
  • 举报
回复
运行以后输出的gradecode行数对了,但是数值都一样啊,这样变成重复数据了。我想要的是,比如gradcode是13,输出的四行数据gradecode分别为10,11,12,13.其他内容相同呀
bw555 2014-08-11
  • 打赏
  • 举报
回复
写错是connect by
select A.*,B.CODE
from T A,(SELECT ROWNUM+9 FROM DUAL CONNECT BY ROWNUM+9<=
    (SELECT MAX(gradecode) CODE FROM T))B
WHERE A.gradecode>=B.CODE
bw555 2014-08-11
  • 打赏
  • 举报
回复
select A.*,B.CODE
from T A,(SELECT ROWNUM+9 FROM DUAL WHERE ROWNUM+9<=
    (SELECT MAX(gradecode) CODE FROM T))B
WHERE A.gradecode>=B.CODE

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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