如何在sqlserver2008中如何根据年份和单位机构码自动生成序列号?

RT....请问:如何在sqlserver2008中如何根据年份和单位机构码自动生成序列号?
=================================================================
假如有一个表basic,只有s_no,name,u_no三个字段
s_no为想要自动生成的序列号,u_no为填报时输入的单位机构码,比如A单位是10,B单位是11,依此类推……

现在,想根据年份和机构码u_no的不同生成序列号:
比如A单位是10且现在是13年,则生成500116-10-2013-00001,再增加一条则是500116-10-2013-00002……
如果现在是14年,第一条记录要是500116-10-2014-00001……类推

RT:现在在写触发器的时候只会把机构码的条件写进去,也就是说,生成的序列号无法在年度内进行递增,而是随便哪一年都会一直递增下去……

===============================================================================
请问这个触发器要怎么改才能让序列号只随着机构码的不同在同一年递增,谢谢

create trigger s_no
on basic
after insert
as
begin
declare @one nvarchar(6), --编号第一部分,500116
@two nvarchar(2), --编号第二部分,医院编号
@three nvarchar(8), --编号第三部分,日期
@four int, --编号第四部分,流水号
set @one='500116'
set @three= convert( varchar(8),GETDATE(),112)
--从Inserted副本表里获取当前插入数据的医院编码
select @two=u_no from Inserted
--获取编号最后四位
select @four=max(cast(right(s_no,4)as int))
from basic
where u_no=@two
--对每一个单位的流水号都是从1开始,已存在单位为最大流水号加1
if @four is null
set @four=0
else
set @four=cast(@four as int)
set @four=@four+1
update basic set s_no=@one+'-'+@two+'-'+@three+'-'+right('0000'+cast(@four as varchar),4) where u_no=@two and  s_no is null
end
go
FineReport年华 发布于 2013-2-4 15:07
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
vikou发布于2013-2-4 20:49(编辑于 2023-9-6 09:34)
555
  • 年华 年华(提问者)

    要是能百度到就不来这问了……不过已经解决了,沉了吧
    回复
    2013-02-05 10:11 
最佳回答
0
年华发布于2013-2-5 10:11(编辑于 2023-9-6 09:34)
555
最佳回答
0
hero_chinawind发布于2013-2-5 10:25(编辑于 2023-9-6 09:34)
555
最佳回答
0
刘宁发布于2013-2-13 22:12(编辑于 2023-9-6 09:34)
555
  • 0关注人数
  • 1616浏览人数
  • 最后回答于:2013-2-13 22:12
    活动推荐 更多
    热门课程 更多
    返回顶部