部门考核细则:关于SQL SERVER的修改数据问题.难得我哦

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 08:07:17
把一个表里的字段A数据修改,表里有日期的字段
要求日期为单日和双日把表里的字段A改为不同的值,并且,日期可以是1年或更长.
是这样的
我要修改一个表里的数据
要根据日期的不同来修改,是2006年1月1号就修改字段A为2,是1月2号就修改字段A为3.就这样.以次类推.3号修改字段A为2,4号修改字段A为3.
逢单日就修改为2,双日修改为3.
这样能实现吗?
就算不能实现,那有没有什么好的方法可以快速的满足我的要求.谢谢了!!!我会再加100分的!!!

我不知道怎么写语句啊????帮帮我

------------------------------
我要修改的表是CASEPROC,要修改的字段是OPER_NUM,要根据日期修改,日期字段是BE_DATA
其中,OPER_NUM的值是整数,BE_DATA的值类似于2005-01-01 15:50:30
我要判断日期是单日还是双日.
而不是把日期也给修改了.
谢谢了.
----------------------------
执行了,但提示错误:
我的语句是这样的
update caseproc set oper_num=6 where right(rtrim(end_time),1)%2=0
提示说将VARCHAR值'M'转换为INT的列时发生语法错误.

以为你日期为char型的
convert(char,BE_DATA)之后日期会改变顺序,如:
2006-11-12 00:00:00.000 会变为
11 12 2006 12:00AM
用substring取得天号,也就是在第5位
更正后的:
update CASEPROC
set OPER_NUM= 3
where substring(convert(char,BE_DATA),5,1)%2 = 0
update CASEPROC
set OPER_NUM= 2
where substring(convert(char,BE_DATA),5,1)%2 = 1

DECLARE @AA DATETIME
DECLARE CURSOR1 CURSOR FOR
SELECT BE_DATE
FROM CASEPROC
OPEN CURSOR1
FETCH NEXT FROM CURSOR1 INTO @AA
WHILE @@FETCH_STATUS=0
BEGIN
IF day(BE_DATE)%2=0
BEGIN
UPDATE CASEPROC
SET OPER_NUM='2'
WHERE BE_DATE=@AA
END
ELSE IF day(BE_DATE)%2=1
BEGIN
UPDATE CASEPROC
SET OPER_NUM='1'
WHERE BE_DATE=@AA
END
END
CLOSE CURSOR1
DEALLOCATE CURSOR1

我没建表,只是打了出来,你拷回去看看吧有什么问题再问我。再有,变量引用那里有可能会出点问题。我用的是游标的引用

应该能的吧~~~你试试啦~~~

请先学好中文再来学SQL!不知道你在说什么?