got*_*tqn 8 t-sql record sql-update
我想更新表格的底部/最后一行.我试图实现这个解决方案,但似乎没有任何正确的语法:
UPDATE TOP(1) @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
ORDER BY PeriodID DESC
Run Code Online (Sandbox Code Playgroud)
要么
UPDATE TOP(1) @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
FROM @ResultTable
ORDER BY PeriodID DESC
Run Code Online (Sandbox Code Playgroud)
我到现在所做的工作是:
UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
WHERE PeriodID=(SELECT COUNT(PeriodID) FROM @ResultTable)-1
Run Code Online (Sandbox Code Playgroud)
但这并不总是有效,因为在我的函数中删除了一些记录,并且我并不总是将PeriodID增加1.
Mar*_*ith 19
;WITH CTE AS
(
SELECT TOP 1 *
FROM @ResultTable
ORDER BY PeriodID DESC
)
UPDATE CTE SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
Run Code Online (Sandbox Code Playgroud)
你的问题没有足够的背景来给出一个防弹的答案.根据您的工作解决方案,如何而不是查找计数查找最大PeriodID?只要后续的PeriodID值更大,它就可以获得"最后"记录.
UPDATE @ResultTable
SET PeriodLastDate=DATEADD(DAY,-1,PeriodLastDate)
WHERE PeriodID=(SELECT MAX(PeriodID) FROM @ResultTable)
Run Code Online (Sandbox Code Playgroud)