更新上一行sql server

时间:2018-02-07 08:39:31

标签: sql sql-server

基本上我想基于具有相同值的其他字段

的值更新上一行

让我们这样说:

enter image description here

我想使用相同日期tr,sh更新前一个记录的前一个值的空单元格。

我尝试这样的事情,但我认为不正确

UPDATE #temptable
  SET
      tk = b.tk
FROM
(
    SELECT DISTINCT
           a.datetime,
           a.date,
           a.tr,
           a.sh,
           b.tk
    FROM
    (
        SELECT sh,
               tr,
               date,
               datetime
        FROM #temptable
        WHERE tk = 0
    ) a
    INNER JOIN
    (
        SELECT sh,
               tr,
               date,
               datetime,
               tk
        FROM #temptable
        WHERE tk != 0
    ) b ON(a.sh = b.sh
           AND a.tr = b.tr
           AND a.date = b.date
           AND a.datetime >= b.datetime)
) b
WHERE #temptable.tr = b.tr
      AND #temptable.date = b.date
      AND (#temptable.tk = 0
           OR #temptable.tk IS NULL);

需要你对此案的建议。 谢谢

3 个答案:

答案 0 :(得分:1)

LAG可以用于此。

Landen

我制作了一个包含示例中两行的测试表,该部分适用于我。如果您有其他问题,请告诉我

答案 1 :(得分:0)

for i in 0..<(tempAry.count)
{
  self.tempLbl.text = "\(i) Task Completed"
}

尝试使用更新内部联接

答案 2 :(得分:0)

首先使用InputStream inputStream = ...; ResponseEntity<InputStreamResource> response = new ResponseEntity<InputStreamResource>(new InputStreamResource(inputStream), headers, HttpStatus.OK); return response; 进行检查并更新值。我假设你要更新多行

CTE