【发布时间】:2017-03-15 06:30:38
【问题描述】:
我有一个表并触发正在执行一些计算和更新列的表。
我想更新输入模式字段,希望在表格中明智地设置 0 和 1 天。 我编写了以下代码,但无法正常工作。
WITH CTE AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY Convert(datetime, el.M_Edatetime)) AS ROW,
el.LogId
FROM
Essl_logdata el
INNER JOIN
Inserted i ON el.EnrollNo = i.EnrollNo
AND el.M_Edatetime = i.M_Edatetime
WHERE
el.EnrollNo = @INS
AND Convert(Date, el.M_Edatetime) = Convert(date, @M_datetime)
)
UPDATE Essl_logdata
SET InOutMode = '0'
FROM CTE
WHERE ROW%2 <> 0 AND Essl_logdata.LogId = CTE.LogId;
WITH CTE AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY COnvert(datetime, el.M_Edatetime)) AS ROW,
el.LogId
FROM
Essl_logdata el
INNER JOIN
Inserted i ON el.EnrollNo = i.EnrollNo
AND el.M_Edatetime = i.M_Edatetime
WHERE
el.EnrollNo = @INS
AND Convert(Date, el.M_Edatetime) = Convert(date, @M_datetime)
)
UPDATE Essl_logdata
SET InOutMode = '1'
FROM CTE
WHERE ROW%2 = 0 AND Essl_logdata.LogId = CTE.LogId;
预期结果如下。
触发器中的当前查询显示结果如下。
【问题讨论】:
-
我看不出这两张图片有何不同。当问题似乎集中在“InOutMode”列上时,为什么突出显示“月份”列也不清楚。一些样本数据和预期结果,作为文本,会显着改善这个问题。
-
抱歉 Inoutmode 列很重要,我想更新该列
标签: sql-server triggers msdn