我想根据案例的结果更新数据库,但是我的" If"声明似乎没有从正确的表中提取信息。
declare @dt datetime
set @dt = GETDATE()
select
Ugenummer = datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1,
case when (datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1) % 2 = 1
then 'ulige' else 'lige' end Ugelighed;
以上代码获取周数(ugenummer)并确定它是奇数还是偶数(Ulige / lige)
IF Ugelighed = ulige and datepart(dw,@dt) = 1
THEN
UPDATE laeger
SET Antal=1
WHERE Navn=Lægenavn
我想使用第一个代码中的信息来更新SQL 2008服务器中的数据库
答案 0 :(得分:0)
你没有使用Ugenummer所以我编辑了它。还为Ugelighed创建了一个变量,你忘了创建一个:
declare @dt datetime
set @dt = GETDATE()
declare @Ugelighed VARCHAR(5);
select
@Ugelighed=case when (datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1) % 2 = 1
then 'ulige' else 'lige' end;
在以下语句中,我使用变量@Ugelighed
与ulige
进行比较,但它是VARCHAR
,因此您需要将其括在单引号(''
)中。与Lægenavn
相同,它是VARCHAR
,因此请将其用单引号括起来:
IF @Ugelighed = 'ulige' and datepart(dw,@dt) = 1
UPDATE laeger
SET Antal=1
WHERE Navn='Lægenavn'
就我个人而言,我会为BIT
创建一个@Ugelighed
字段,因为偶数/奇数可以被捕获为一个简单的布尔值而不是文本。