我在我的SQLite数据库中添加了一个列,我需要插入重复的序列号,从1开始... n但它基于其他列的分组。当有新的分组时,序列需要再次从1开始。
这是我的表格:
CREATE TABLE "ProdRunResults" ("ID" INTEGER PRIMARY KEY NOT NULL UNIQUE , "SeqNumbr" INTEGER, "Shift" INTEGER, "ShiftSeqNumbr" INTEGER, "Date" DATETIME, "ProdRunID" INTEGER, "Result" VARCHAR)
ShiftSeqNumbr是我需要填充序列号的新列,基于ProdRunID列中的数字分组,然后是Shift列中的数字。
最多可能有3个班次" (工作时间为24小时)。
我拼凑了一些代码来执行此操作,但它以反向(降序)顺序将序列号添加到ShiftSeqNumbr列:
UPDATE ProdRunResults
SET ShiftSeqNumbr = (SELECT COUNT (*)
FROM ProdRunResults AS N
WHERE N.ProdRunID = ProdRunResults.ProdRunID
AND N.Shift = ProdRunResults.Shift
AND N.ShiftSeqNumbr = ProdRunResults.ShiftSeqNumbr);
如何更改Update语句,以便序列号从1开始向上?或者有更好的方法吗?
答案 0 :(得分:1)
您的UPDATE语句计算在ProdRunID
/ Shift
/ ShiftSeqNumbr
列中与当前行具有相同值的行数。当前行在ShiftSeqNumbr
中始终具有空值,因此它计算当前组中尚未更新的行数。
您需要计算当前行之前的行数,即有多少行具有相同的ProdRunID
和Shift
值,以及相同或更小的SeqNumbr
值:
UPDATE ProdRunResults
SET ShiftSeqNumbr = (SELECT COUNT (*)
FROM ProdRunResults AS N
WHERE N.ProdRunID = ProdRunResults.ProdRunID
AND N.Shift = ProdRunResults.Shift
AND N.SeqNumbr <= ProdRunResults.SeqNumbr);