Sql 在表中存储操作的时间戳
我有一个疑问: 更改进程spbadge @周号nvarchar255 像 开始 更新pointsbadge 设置 badge1=当WeeklyHoursloged>='40'时的情况,然后1 else 0结束, badge2=当WeeklyHoursLogged=50且WeeklyHoursLogged<55时,则为“1”,否则为0结束, badge4=当WeeklyHoursLogged>=55且WeeklyHoursLogged<60时,则为“1”,否则为0结束, badge5=当WeeklyHoursloged>=60时,则为“1”,否则为0;Sql 在表中存储操作的时间戳,sql,sql-server,sql-server-2008,sql-server-2005,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2012,我有一个疑问: 更改进程spbadge @周号nvarchar255 像 开始 更新pointsbadge 设置 badge1=当WeeklyHoursloged>='40'时的情况,然后1 else 0结束, badge2=当WeeklyHoursLogged=50且WeeklyHoursLogged=55且WeeklyHoursLogged=60时,则为“1”,否则为0; end如果满足您的要求,请使用以下代码检查:您可以根据表结构和数据调整查询 -徽章点信息 CREATE TABLE p
end如果满足您的要求,请使用以下代码检查:您可以根据表结构和数据调整查询 -徽章点信息
CREATE TABLE pointsBadge(EmployeeName VARCHAR(50), EmployeeID INT, badge1 INT, badge2 INT, badge3 INT, badge4 INT, badge5 INT)
INSERT INTO pointsBadge VALUES
('Lyka', 1122, 1, 1, 0, 0, 0),
('Brinda', 2233, 0, 0, 0, 0, 0),
('Anil', 34, 1, 1, 0, 0, 1)
-用于存储具有当前时间戳的员工徽章数据的新表
CREATE TABLE employee_badge(id INT IDENTITY(1,1), employee_id INT, badge_id INT, earned_on DATETIME)
-徽章信息表
CREATE TABLE #badges(BadgeId INT IDENTITY(1, 1), BadgeName VARCHAR(50))
INSERT INTO #badges VALUES
('Badge1'),
('Badge2'),
('Badge3'),
('Badge4'),
('Badge5'),
('Badge6')
-触发将数据插入带有更新数据的employee_badge表
IF OBJECT_ID('[dbo].[TRGUpdate_badge_info]', 'TR') IS NOT NULL
DROP TRIGGER dbo.TRGUpdate_badge_info
GO
CREATE TRIGGER dbo.TRGUpdate_badge_info ON dbo.pointsBadge
FOR UPDATE
AS
INSERT INTO employee_badge
SELECT d.EmployeeID,
b.BadgeId,
GETDATE()
FROM pointsBadge p
INNER JOIN DELETED d ON p.EmployeeID = d.EmployeeID
INNER JOIN #badges b ON b.BadgeName = CASE WHEN (p.badge1 <> d.badge1) THEN 'Badge1'
WHEN (p.badge2 <> d.badge2) THEN 'Badge2'
WHEN (p.badge3 <> d.badge3) THEN 'Badge3'
WHEN (p.badge4 <> d.badge4) THEN 'Badge4'
WHEN (p.badge5 <> d.badge5) THEN 'Badge5'
END
GO
UPDATE pointsBadge SET badge5 = 2 WHERE employeeID = 1122
SELECT * FROM employee_badge
WeeklyHoursLogged是什么?这是奖章奖励条件的一部分。我这里的问题不同。无论如何,谢谢。上帝保佑。我建议创建employee_badge表。你可以在pointsBadge上创建触发器并获得更新的employee_id,在employee id的帮助下获得badgeid并插入employee_badge-获取日期timestamp@Suraz谢谢你的意见。你的解决方案看起来完美而高效。你能帮我查询一下吗?我正在努力解决这个问题。上帝保佑,非常感谢你。。。你是个天才,上帝保佑@苏拉兹