大家好,请问我想查出表A中,字段B 以当天日期格式如:091228开头的数据,如果为0条的话就设值为091228,如果count(*)为1的话,就设为091228[1],如果为091228[1]的话就取当天日期后续位[]中最大数值加1,请问,这语句要怎样写?
如:
表A
B
091228
091228[1]
091228[8]
则结果为:091228[9]
如:
表A
B
091228
091228[1]
091228[8]
则结果为:091228[9]
解决方案 »
- 触发器中如何获取用当前修改行的字段值?
- 分组后排序
- 將一個字段的數據拆分成兩個字段
- nvarchar(n)定义时n取值越大越方便开发和以后维护吗?
- 我要建一個與已經存在的表相同字段的臨時表,這兩種方法哪一個好
- 小弟刚来的,有个问题请教
- 我正在用log explorer恢复数据,请各位有经验的大大进来看我操作是否正确
- 还有七分升一级,为了大家共同进步,放100分,前十人才有分,每人十分!!
- 知道怎么解决sql server 2000安装问题的朋友,请进来指点下
- 高分求解: sql mail 成功发出可收不到,怎么解决??为什么?(欢迎大家来讨论,来者有分)
- mssql 短路判断能实现吗
- 小问题?关于赋值
'091228'+'['
MAX(CASE WHEN RIGHT(B,LEN(B)-6) ='' THEN '091228'
ELSE LTRIM(CONVERT(INT,RIGHT(B,LEN(B)-6))+1) END)+']'
from a
请问,要怎样解决?用substring可以避免吗?
select @i='091230'select isnull(@i+'['+cast(max(substring(b,2,len(b)-2)+1) as varchar(10))+']',@i) as b from
(select
(case when right(b,len(b)-len(@i)) ='' then '[0]'
else right(b,len(b)-len(@i)) end) as b
from #temp where b like @i+'%') as a
declare @i varchar(10)
select @i='091228'select isnull(@i+'['+
cast(max(case when b is null then null
when right(b,len(b)-len(@i)) ='' then 1
else replace(stuff(b,1,len(@i)+1,''),']','')+1
end) as varchar(10))+']',@i)
from #temp
where b like @i+'%'
ISNULL('091228'+'['+
LTRIM(MAX(CASE WHEN RIGHT(B,LEN(B)-6) ='' THEN 1
ELSE RIGHT(LEFT(B,LEN(B)-1),LEN(B)-8)+1 END))+']','091228')
FROM #TEMP
WHERE B LIKE '091228%'