数据库格式 id(自动编号) bh(文本型) sdate(日期型)
想要的效果:
---------------------------------
ID bh sdate
---------------------------------
1 2007-1 2007-7-22
2 2007-2 2007-7-23
3 2007-3 2007-7-23
4 2008-1 2008-1-1
5 2008-2 2008-1-1问题: ID是累加的,日期是取当前的,编号是:当前年份-x(目前x 我取的是ID值)
怎样能做到当时间为2008年时,bh为2008-1开始?而不是累加后的x??
想要的效果:
---------------------------------
ID bh sdate
---------------------------------
1 2007-1 2007-7-22
2 2007-2 2007-7-23
3 2007-3 2007-7-23
4 2008-1 2008-1-1
5 2008-2 2008-1-1问题: ID是累加的,日期是取当前的,编号是:当前年份-x(目前x 我取的是ID值)
怎样能做到当时间为2008年时,bh为2008-1开始?而不是累加后的x??
快来看看,腾迅为庆祝腾讯QQ八周年,现在开放六位 QQ 号码免费申请,数量有限,送完即止,加油吧
Count(*)得到的最大记录数,做为bh时,如果第2条被删, 上面的例子Count(*)=4,
newbh=4+1,此时与已有的冲突...---------------
有没有其他思路?
如果0条,那就是1了.
如果1条,那你就将 bh读取来,去掉前面的2008-即可得到,数据库时最大的编号.至于 你的 ...语句里不能出现2008,考虑将来2009 ...
你可以将语句里的2008做成变量,换汤不换药.
new_bh=split(rs!max_bh,"-")(0) & "-" & cint(split(rs!max_bh,"-")(1))+1
else
new_bh=year(date) & "-" & "1"
end if这个不知道是不是你要的?
select convert(varchar(4), year(getdate()))+'-'+convert(varchar(10),count(*)+1) as bh from smt_ads where year(smt_lasttime)=year(getdate())
我大概说一下我对你这个库的理解:
1 2007-1 2007-7-22
2 2007-2 2007-7-23
3 2007-3 2007-7-23
4 2008-1 2008-1-1
5 2008-2 2008-1-1
你的123条记录的意思是在2007年里发生了三笔业务,其发生的日期是后面的记录。
如果是这样我会再建一个表,
ID year Item_Count
1 2007 3
2 2008 2然后再是你的表。
这样一来一是你知道你在特定年里有没有记录,有多少记录。这时你的问题就很容易解决。而且速度也会快很多。这是我的建议,希望对你有帮助。
所以还有 家人 说的另建状态表的方式 效果比较好
不用表的话可能这样行吧:select max(val(mid(tt,6))) as n
from tb
where mid(tt,1,4)=year(date())这样如果没有记录集返回:
new_bh=year(date) & "-" & "1"
有记录集返回:
new_bh=year(date) & "-" & rs!n +1