基于条件向SQLite数据库中的列添加重复序列号
我在SQLite数据库中添加了一列,需要插入重复的序列号,从1…n开始,但它是基于其他列的分组。当有新的分组时,序列需要再次从1开始 这是我的桌子: 创建表ProdRunResults ID INTEGER主键非空唯一、SeqNumbr INTEGER、Shift INTEGER、ShiftSeqNumbr INTEGER、Date DATETIME、ProdRunID INTEGER、Result VARCHAR ShiftSeqNumbr是一个新的列,我需要根据ProdRunID列中的数字分组,然后根据Shift列中的数字填充序列号 在24小时内最多可以有3个班次 我拼凑了一些代码来实现这一点,但它以相反的降序将序列号添加到ShiftSeqNumbr列:基于条件向SQLite数据库中的列添加重复序列号,sqlite,sql-update,Sqlite,Sql Update,我在SQLite数据库中添加了一列,需要插入重复的序列号,从1…n开始,但它是基于其他列的分组。当有新的分组时,序列需要再次从1开始 这是我的桌子: 创建表ProdRunResults ID INTEGER主键非空唯一、SeqNumbr INTEGER、Shift INTEGER、ShiftSeqNumbr INTEGER、Date DATETIME、ProdRunID INTEGER、Result VARCHAR ShiftSeqNumbr是一个新的列,我需要根据ProdRunID列中的数字分
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开始向上?或者有更好的方法吗?UPDATE语句统计ProdRunID/Shift/ShiftSeqNumbr列中有多少行的值与当前行的值相同。当前行在ShiftSeqNumbr中始终有一个空值,因此它正在计算当前组中有多少行尚未更新 您需要计算当前行之前有多少行,即有多少行具有相同的ProdRunID和Shift值,以及相同或更小的SeqNumbr值:
我知道那里的逻辑有缺陷!非常感谢。事实上,我不得不对你的建议做一个小小的改变,因为你的例子给出了相同的结果,序列号递减,但在上一个条件中更改为LT符号修复了它:将ProdRunResults集ShiftSeqNumbr=SELECT COUNT*从ProdRunResults中选择为N,其中N.ProdRunID=ProdRunResults.ProdRunID和N.Shift=ProdRunResults.Shift和N.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);