请教一个存储过程,同批不足指定行数的插行。

jaychensusu 2014-03-20 11:19:47
一、表结构如下:

CREATE TABLE [dbo].[Table_test](
[bh] [varchar](20) NULL,
[name] [varchar](50) NULL,
[ye] [decimal](18, 2) NULL
) ON [PRIMARY]

二、测试数据如下:

insert into table_test(bh,name,ye) values('t001','李明',1000)
insert into table_test(bh,name,ye) values('t001','李张',1000)
insert into table_test(bh,name,ye) values('t001','李三',1000)
insert into table_test(bh,name,ye) values('t001','李四',1000)

insert into table_test(bh,name,ye) values('t002','孙明',1100)
insert into table_test(bh,name,ye) values('t002','李达',1100)

insert into table_test(bh,name,ye) values('t003','陈明',1200)
insert into table_test(bh,name,ye) values('t003','刘志',1200)
insert into table_test(bh,name,ye) values('t003','孙华',1200)

三、达到目标:现在是4行为一个批次编号(注4行或5行都可以),同一批次
不足4行的,要插入同批次编号的行。 效果如下:

bh name ye
------------------------------
t001 李明 1000.00
t001 李张 1000.00
t001 李三 1000.00
t001 李四 1000.00

t002 孙明 1100.00
t002 李达 1100.00
t002 NULL NULL
t002 NULL NULL

t003 陈明 1200.00
t003 刘志 1200.00
t003 孙华 1200.00
t003 NULL NULL

(注: 7.8.12行是要插入的行次。)
...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 jaychensusu 的回复:
是的,您说的第二种情况.
哦,试试这个:

--补足4条记录
insert into [Table_test]
select bh,null,null
from 
(
select bh,COUNT(*) c
from [Table_test]
group by bh
)t,master..spt_values s
where s.type = 'P' and s.number >=1 and s.number <= 4-c


--再次查询
select *
from [Table_test]
order by bh,name desc
/*
bh	name	ye
t001	李张	1000.00
t001	李四	1000.00
t001	李三	1000.00
t001	李明	1000.00
t002	孙明	1100.00
t002	李达	1100.00
t002	NULL	NULL
t002	NULL	NULL
t003	孙华	1200.00
t003	刘志	1200.00
t003	陈明	1200.00
t003	NULL	NULL
*/
jaychensusu 2014-03-21
  • 打赏
  • 举报
回复
是的,您说的第二种情况.
  • 打赏
  • 举报
回复
引用 1 楼 jaychensusu 的回复:
有朋友会吗?
你是想怎么实现呢。 是看当你插入只有3条数据的时候,自动就补一条记录吗 还是等都插入完了,最后检查一下,有不全的,补足4条数据呢
jaychensusu 2014-03-21
  • 打赏
  • 举报
回复
有朋友会吗?
xxfvba 2014-03-21
  • 打赏
  • 举报
回复
楼上的牛人啊

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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