求个SQL语句

pingdesu 2017-08-23 07:28:05
a表中有字段b,其值都是以S开头的如S001,S002,S004,S006,...等,我现需要将其中未出现过的S003,S005,...等数据SELECT出来,这样的SQL怎么写呢,求大神帮助
...全文
453 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iam9823119 2017-08-28
  • 打赏
  • 举报
回复
SELECT REPLACE('S' || TO_CHAR(ROWNUM, '000'), ' ', '') AS B FROM DUAL CONNECT BY LEVEL <= (SELECT TO_NUMBER(MAX(SUBSTR(A.B, 2))) FROM A) MINUS SELECT B FROM A
mayanzs 2017-08-24
  • 打赏
  • 举报
回复
t第一行写错了maxb,纠正为max_b with a1 as (select to_number(min(substr(a.b,2,4))) minb,to_number(max(substr(a.b,2,4))) max_b from a), a2 as (select 'S'||lpad(min_b+level-1) all_b from a1 connect by level<=max_b) select alln from a2 where not exists (select 1 from a where a.b=a2.all_b) order by 1;
mayanzs 2017-08-24
  • 打赏
  • 举报
回复
with a1 as (select to_number(min(substr(a.b,2,4))) minb,to_number(max(substr(a.b,2,4))) maxb from a), a2 as (select 'S'||lpad(min_b+level-1) all_b from a1 connect by level<=max_b) select alln from a2 where not exists (select 1 from a where a.b=a2.all_b) order by 1;

1,617

社区成员

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

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