Sql server 2008 从案例结果写入数据库
我想根据案例的结果更新数据库,但是我的“If”语句似乎没有从正确的表中提取信息Sql server 2008 从案例结果写入数据库,sql-server-2008,tsql,stored-procedures,Sql Server 2008,Tsql,Stored Procedures,我想根据案例的结果更新数据库,但是我的“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
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;
上面的代码获取weeknumber(ugenummer)并确定它是奇数还是偶数(Ulige/lige)
我想使用第一个代码中的信息更新SQL 2008 server中的数据库您没有使用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'
就我个人而言,我会为
@Ugelighed
创建一个位
字段,因为偶数/奇数可以被捕获为一个简单的布尔值而不是文本。不要在这里抛出代码。请解释它的作用,以及它如何在您使用SQL Server时不起作用?SQL Server的哪个版本?代码的第一部分现在可以工作了!(不确定如何将案例分配给变量)但第二部分,即我要更新表的部分仍然不起作用。它返回错误:关键字“THEN”附近的语法不正确。@Mclovin Oops,THEN
未在IF/ELSE
语句中使用。更新了我的答案。我的复制/粘贴速度太快了。非常感谢!现在它的功能如预期的那样
IF @Ugelighed = 'ulige' and datepart(dw,@dt) = 1
UPDATE laeger
SET Antal=1
WHERE Navn='Lægenavn'