Pla*_*625 0 sql-server stored-procedures sql-server-2008
当有人登录他的帐户时,我在存储过程中有以下行:
UPDATE AcccountsTable SET LogDate = getdate() WHERE AccID = @identity
Run Code Online (Sandbox Code Playgroud)
但是,我想在每个连续登录日添加一个新功能,以添加+1到我的新列(ConsecutiveDays)中AccountsTable.
例如:
Day 1: 2018-04-11 20:00
Day 2: 2018-04-12 15:30
Day 3: 2018-04-13 10:20
and etc ....
Run Code Online (Sandbox Code Playgroud)
对于在连续几天内记录的用户帐户ID,连续总天数应为3天.
如果用户未登录day 4- 2018-04-14但在第二天登录,2018-04-15则应将所有连续日期还原为1.
我在MSSQL Server 2008 R2上搜索了类似的存储过程解决方案但没有成功.我根本不擅长SQL,所以我非常感谢你的帮助!先感谢您!
使用时不应该太难case:
UPDATE AcccountsTable
SET ConsecutiveDays =
CASE WHEN CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) As Date)
AND ConsecutiveDays < 28 THEN
ConsecutiveDays + 1
WHEN CAST(LogDate as Date) = CAST(GETDATE() as Date) THEN
ConsecutiveDays
ELSE
1
END,
ChallengesCompleted =
CASE WHEN ConsecutiveDays = 28
AND CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) As Date)
THEN
ChallengesCompleted + 1
ELSE
ChallengesCompleted
END,
LogDate = GETDATE()
WHERE AccID = @identity
Run Code Online (Sandbox Code Playgroud)