导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

zywinner168 自由职业 服务员  2008-01-10 06:43:07
要求是年+月+标矢。标矢要先从targetid这张表中筛选出最大的一个,targetid是已经生成完毕的单号,选出最大值后对targetid进行拆分,去掉里面的年和月只留标失,然后对标失加1。谢谢大家了,想了很久都不知道从什么地方下手。
...全文
62 点赞 收藏 6
写回复
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这张表中筛选出最大的一个
---------------
贴几个出来看看,,,
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告