在SQL中插入新行和更新值

时间:2015-02-27 22:47:41

标签: sql-server

我想要做的事情起初看起来相当简单,但它让我很难过。我有3张桌子。表A包含作业列表。表B包含Actions列表。表C包含这两个表的交集,这意味着它包含一个具有关联Actions的Jobs列表,其中Actions被赋予一个Action Order(Actions执行的顺序)。例如,1个Job可以有8个不同的动作,排名为#1-8,依此类推。

这是我在哪里

Declare @T_variable TABLE(JobClassId int)
INSERT INTO @T_variable 
SELECT JobClassId
FROM CFG.JobClass 
WHERE jobClassDesc IN ('BD Staff Clerical','DOT Driver','DOT Frontline Supervisor and Asst Facility Managers','DOT Manager Ops','Driver Non DOT','Frontline Hourly','Frontline Supervisors and Asst Facility Managers','Manager Ops','Special Events','Special Events Flagger','Valet')

DECLARE @JobClassId1 int

DECLARE db_cursor CURSOR FOR  
SELECT JobClassId
FROM @T_variable

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @JobClassId1

WHILE @@FETCH_STATUS = 0
BEGIN

SELECT * FROM CFG.ActionJobClass WHERE JobClass = @JobClassId1 ORDER BY ActionOrder ASC

FETCH NEXT FROM db_cursor INTO @JobClassId1
END

CLOSE db_cursor

这给了我一个ActionOrder为每个作业订购的动作列表。

我想要做的是在某个点(始终在另一个特定的Action之后)将每个Job的新Action插入到该表中,并且在这样做时,更新ActionOrder以使其顺序工作。例如,我想在另一个指定的Action(例如Action'C')之后为作业插入一个新的Action。作业的当前列表将是:(请注意:左侧的数字是值的值表C中的Action Order列

  1. 行动'A'
  2. 行动'B'
  3. 行动'C'
  4. 行动'D'
  5. 行动'E'
  6. 在动作'C'之后立即将新动作(动作'F')插入现场后,新列表将是:

    1. 行动'A'
    2. 行动'B'
    3. 行动'C'
    4. 行动'F'
    5. 行动'D'
    6. 行动'E'
    7. 从我收集的内容中,我需要做以下事情:

      1. 创建新动作(已完成,我已将新动作添加到动作表中)
      2. 选择作业列表ID(完成,我将它们放在T变量表中)
      3. 循环工作
      4. 在Job循环中选择我当前所处的作业的动作列表(Done kinda?我已经证明我可以在循环中的select语句中显示它们)
      5. 创建索引变量(不确定是否有必要,但可能因为我需要跟踪订单号)
      6. 遍历作业的操作列表
      7. 在指定的操作后,将我的新操作插入操作列表。
      8. 更新以下(以前存在的)操作以将+1添加到其操作订单#
      9. 我只是不知道如何将其转换为SQL脚本。如果它是C#就很容易!

0 个答案:

没有答案