Oracle数据库,一条SQL语句插入多行数据?

如图所示:目标:插入4条数据,年份是当前表最大年份加1查询出的最大年份是2024。4条数据现在我想写一条SQL。实现每次执行一遍,都会加入4条数据,而且年份都会往上涨1年... 如图所示:目标:插入4条数据,年份是当前表最大年份加1
查询出的最大年份是2024。4条数据
现在我想写一条SQL。实现每次执行一遍,都会加入4条数据,而且年份都会往上涨1年。
执行一遍后,最大的年份数据为:
2025 1 第一季度 20250101 20250331
2025 2 第二季度 20250401 20250630
2025 3 第三季度 20250701 20250930
2025 4 第四季度 20251001 20251231
展开
 我来答
badkano
2018-12-25 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部

按照你现有的表创建历史数据:

create table khqfbd_1
(khn int,
khqxh int,
khmc varchar2(20),
qsrq varchar2(8),
jsrq varchar2(8),
bz varchar2(100));

insert into khqfbd_1 values (2024,1,'第一季度','20240101','20240331','1');
insert into khqfbd_1 values (2024,2,'第二季度','20240401','20240630','1');
insert into khqfbd_1 values (2024,3,'第三季度','20240701','20240930','1');
insert into khqfbd_1 values (2024,4,'第四季度','20241001','20241231','1');
commit;

执行:

declare
  v_year int;
begin
  select max(khn) into v_year from khqfbd_1;
  insert into khqfbd_1
  values
    (v_year+1, 1, '第一季度', v_year+1 || '0101', v_year+1 || '0331', '1');
  insert into khqfbd_1
  values
    (v_year+1, 2, '第二季度', v_year+1 || '0401', v_year+1 || '0630', '1');
  insert into khqfbd_1
  values
    (v_year+1, 3, '第三季度', v_year+1 || '0701', v_year+1 || '0930', '1');
  insert into khqfbd_1
  values
    (v_year+1, 4, '第四季度', v_year+1 || '1001', v_year+1 || '1231', '1');
  commit;
end;

执行后结果:

追问
谢谢,至少又学会了其中一种办法。我同事有一个更加简单的。
insert into khqfdb_1 select khn+1,khqxh,khmc,khn+1||substr(qsrq,5),khn+1||substr(jsrq,5),bz from khqfdb_1 where khn=(select max(khn) from khqfdb_1)
longrenyingdc8ecb1
2018-12-25 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2362万
展开全部
你原来的表内应该每年是4条记录吧。也就是说只要把年分+1就可以了。
insert into khqfdb_1(我假设只有这些字段,而且字段顺序就是这样,这样我就不用写那些字段了) select khn+1,khqxh,khmc,qsrq+10000,jsrq+10000,bz from khqfdb_1 where khn=max(khn)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式