用case判断一下不可以吗?然后获取序号,再格式化为你要的格式
解决方案 »
- 求大神赐一条sql语句,或其它解决方法
- 存储过程判断文件夹是否存在
- window2003 装 sql server 2000?怎么装不上啊??
- SQL Server2000數據庫的SQL語句怎么寫某個字段包含某個字符?
- 关于COUNT 查询的求助
- 请问is null 和 = null有何区别?
- 数据库中有starttime(datetime)字段,和kstime(int)字段,求默认值公式starttime+kstime
- 事务(进程 ID 68)与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务,请数据库高手指点,这种情况如
- 急问!!如何显示同表中,列值相似的记录!!请大侠指教!!
- 如何在显示日期列的同时显示星期几呢?***请高手相助***
- 抽取重复记录
- 请教一个树形结构的sql语句怎么些写?求救了 !!!
gocreate procedure my_proc @name varchar(10)
as
begin
declare @px as varchar(10)
set @px = ''
if @name = '全棉'
begin
select @px = max(px) from tb where code = 'C'
if @px is null
insert into tb values(@name , 'C' , '000001')
else
insert into tb values(@name , 'C' , right('000000'+cast(cast(@px as int)+1 as varchar),6))
end
if @name = '全涤'
begin
select @px = max(px) from tb where code = 'T'
if @px is null
insert into tb values(@name , 'T' , '000001')
else
insert into tb values(@name , 'T' , right('000000'+cast(cast(@px as int)+1 as varchar),6))
end
end
goexec my_proc '全棉'
exec my_proc '全棉'
exec my_proc '全棉'
exec my_proc '全涤'
exec my_proc '全涤' select * from tbdrop table tb
drop procedure my_proc/*
name code px
---------- ---------- ----------
全棉 C 000001
全棉 C 000002
全棉 C 000003
全涤 T 000001
全涤 T 000002(所影响的行数为 5 行)
*/
我只做了一个例子,表那个地方你可以把它删除掉,换成你需要的表。/***************
@falg :
1,全棉
2,全涤
3,人棉
4,涤棉
5,涤人棉
exec TB_test 1
***************/
alter proc TB_test
@falg int
as
set nocount on
--测试表
declare @table table
(
formatname nvarchar(40),
formatnum nvarchar(100)
)
declare @count int
if @falg=1
begin
set @count=(select count(*)from @table where formatname='全棉')+1
insert @table values('全棉',left('T000000',7-len(@count))+cast(@count as nvarchar(10)))
select * from @table
end
然后单步运行 exec TB_test 1