求一段单号生成的存储过程

zywinner168 2008-01-10 06:43:07
要求是年+月+标矢。标矢要先从targetid这张表中筛选出最大的一个,targetid是已经生成完毕的单号,选出最大值后对targetid进行拆分,去掉里面的年和月只留标失,然后对标失加1。谢谢大家了,想了很久都不知道从什么地方下手。
...全文
119 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuedeem 2008-01-11
  • 打赏
  • 举报
回复

select left(replace(convert(varchar(10),getdate(),120),'-',''),6)+ convert( varchar(10), max(right(id,2)+1)) from targetid
zywinner168 2008-01-10
  • 打赏
  • 举报
回复
谢谢了。
dobear_0922 2008-01-10
  • 打赏
  • 举报
回复
create table targetid(id bigint)
insert targetid select 2007010102
union all select 2007031503
union all select 2007061204
union all select 2007080505
union all select 2007080625

go
create procedure sp_Test
as
begin
declare @n bigint
select @n=max(id)+1 from targetid
select cast(stuff(rtrim(@n),1,8,replace(convert(varchar(10),getdate(),120),'-','')) as bigint)
end
go

exec sp_Test

/*
--------------------
2008011026

(1 row(s) affected)
*/

drop procedure sp_Test
drop table targetid
dobear_0922 2008-01-10
  • 打赏
  • 举报
回复
晕,年月的后面只有两位,这怎么够用?

另外,用字符存储也可以直接用Max函数,,,
zywinner168 2008-01-10
  • 打赏
  • 举报
回复
targetid

id
2007010102
2007031503
2007061204
2007080505
2007080625

要求是先筛选出最大的一个id,我想用int数据类型来存储,这样直接用max就能筛选出最大值了,关键是拆分的时候不知道该怎么做,比如id 2007080606我想去掉前面的20070806只留下25来做唯一标失,拆分后就把标失加1生成新的唯一标失,然后再按照年+月+标矢的形式生成一个新的标失。
dobear_0922 2008-01-10
  • 打赏
  • 举报
回复
能说清楚点么?


从targetid这张表中筛选出最大的一个
---------------
贴几个出来看看,,,

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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