阿凯加油 2022-01-23 17:39 采纳率: 90%
浏览 34
已结题

把select的结果插入数据库

with a(transdate, summarycode, pubaccnum,hostsernum, transcode) as (
select a.transdate, trim(a.summarycode), a.pubaccnum, a.hostsernum, a.transcode from pb600 a where a.transdate >= '2021-05-01' and a.transdate <= '2021-05-31' and a.summarycode in ('8156','8116','8115','8150','8114','8110','8151','8109','8105','8120','8104','8143','8142','8003','8129','8138','8139','8014','8015','8017','8117','8016','8141','8009','8010','8132','8133','1534','8147','8123','2198','8157','8013')
)
select a.summarycode, (select x.summarydes from pb002 x where x.summarycode = a.summarycode) as summary,count(1) from a where a.summarycode in ('8156','8116','8115','8150','8114','1534','8147','8157','8139','8138','8143','8142','8013','8129','8138','8014','8015','8017','8117','8016','8141','8009','8010','8132','8133') group by a.summarycode

上面的 这个没问题 可以执行,但是想把执行的结果插入表里面就不行了

报错104 遇到非法符号 这个要怎么写呢?

  • 写回答

4条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-23 17:47
    关注

    你既然是insert报错,那么就应该把insert命令发出来呀。
    使用with的时候,insert 要放到with前面去

    create table test_20220123_01(a number);
    
    insert into test_20220123_01(a)
    with xx as (select 1 a from dual)
    select a from xx;
    

    你都能用sql查出数据了,为什么不直接用查询sql去插,还导出成值再插?
    还有,你发的这个sql也不完整啊,指定了7个字段,那么后面的值也有接7个,并且按顺序一一对应。
    你这后面括号里只有4个值,而且还是以逗号结尾,当然会报错。
    正常的单行插入sql应该长这样

    insert into 表名(字段1, 字段2, 字段7, 字段8 ) VALUES ( '字段1的值','字段2的值','字段7的值','字段8的值')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 1月23日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题