【问题标题】:TSQL "Array" - Update records based on a list and remember last used valueTSQL“数组” - 根据列表更新记录并记住上次使用的值
【发布时间】:2014-02-26 23:13:41
【问题描述】:

标题可能有点令人困惑......但我正在寻找一种方法来运行 SQL Server 作业来更新插入到表中的记录。

我有一份将分配这些记录的人员列表。我们将每天导入记录,我想知道如何让 TSQL 循环遍历这些记录并更新它们想要记住最后分配的人,这样每个人都有相似数量的记录.

基本上,我有一份人员名单

John

Steve

Jerry

Nick

因此,如果导入 10 条记录,每个人都会得到 2 条记录,但 John 和 Steve 除外,他们得到 3 条记录。在下一次导入时,我希望更新记住 John 和 Steve 收到 3 条记录并从 Jerry 开始并以他为起始位置……以此类推……

希望这已经足够清楚了

【问题讨论】:

    标签: sql-server arrays tsql


    【解决方案1】:

    这里没有太多信息可以参考...但是假设您的工作有一个 JOB_ID 并且这个 JOB_ID 是一个正在运行的序列,那么您可以简单地对 JOB_ID 与您拥有的人数进行模(模)。例如,在您的情况下,您有四个人

    约翰、史蒂夫、杰瑞、尼克。这里 John 将与 0 相关联,Steve 将与 1 相关联,Jerry 2 和 Nick 3 相关联。

    所以,假设 Job_ID 1 进来了。

    1 modulo 4 = 1 (Steve)
    

    同样

    2 modulo 4 = 2 (Jerry)
    3 modulo 4 = 3 (Nick)
    4 modulo 4 = 0 (John)
    5 modulo 4 = 1 (Steve)
    6 modulo 4 = 2 (Jerry)
    ....
    ....
    ....
    ....
    Job_ID 359
    359 modulo 4 = 3 (Nick)
    

    等等...这样你就不必记住最后分配的人或类似的东西。只要 Job_ID 的顺序合理,它们就会被正确分配给正确的人。

    在 T-SQL 中取模运算符如下 -

    http://technet.microsoft.com/en-us/library/ms190279(v=sql.105).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2020-12-12
      • 2019-02-02
      • 1970-01-01
      • 2021-01-14
      • 2021-02-18
      相关资源
      最近更新 更多