创建存储过程以比较记录并更新系统生成的记录

时间:2018-03-11 04:42:01

标签: sql-server-2014-express

我需要帮助:我有来自不同用户的4个车辆记录:

    vehicle_id      vehicle_name    vehicle_number      date_update
usr1    10           My Ferrari      1000                   NULL
usr2    11           My Ferrari      1000                   NULL
usr3    12           My Ferrari      1000                   NULL    
usr4    13           My Ferrari      1001                   NULL

在这条记录中,我想要共同记录,所以,我已经应用了Group By并创建了单独的记录作为我的系统生成的记录

      vehicle_id        vehicle_name    vehicle_number      date_update
sys         14           My Ferrari      1000                   NULL

现在这是我的条件:

条件1: 3条记录相同,一条不同

如果任何用户更新了他自己的记录,那么系统或脚本也会重新计算或比较所有四个记录并更新我的sys记录中的列

我也在设置记录更新日期。

E.g

      vehicle_id        vehicle_name    vehicle_number      date_update
usr1        10           My Ferrari      1000                   NULL
usr2        11           My Ferrari      1001                   09/03/2018  
usr3        12           My Ferrari      1001                   09/03/2018
usr4        13           My Ferrari      1001                   NULL

所以我的系统记录也得到了更新

        vehicle_id      vehicle_name    vehicle_number      date_update
sys         14           My Ferrari      1001                   09/03/2018

条件2:此条件下具有相同值的每2条记录需要获取最新的更新记录

E.g

     vehicle_id         vehicle_name    vehicle_number      date_update
usr1        10           My Ferrari      1002                   09/03/2018 8:55 AM
usr2        11           My Ferrari      1001                   09/03/2018 7:55 AM
usr3        12           My Ferrari      1001                   09/03/2018 7:30 AM
usr4        13           My Ferrari      1002                   09/03/2018 8:57 AM

所以我的系统记录也得到了更新

     vehicle_id         vehicle_name    vehicle_number      date_update
sys         14           My Ferrari      1002                   09/03/2018

条件3:每条记录都包含不同记录,需要获取最新的更新记录

E.g

       vehicle_id       vehicle_name    vehicle_number        date_update
usr1        10           My Ferrari      1001                   09/03/2018 8:55 AM
usr2        11           My Ferrari      1003                   09/03/2018 7:55 AM
usr3        12           My Ferrari      1004                   09/03/2018 7:30 AM
usr4        13           My Ferrari      1005                   09/03/2018 8:57 AM

所以我的系统记录也得到了更新

     vehicle_id         vehicle_name    vehicle_number      date_update
sys         14           My Ferrari      1005                   09/03/2018

那么处理存储过程中所有三个条件并相应更新我的Sys记录的最佳方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

总结你的问题..在所有三个条件中,sys记录总是最近由用户更新的记录。

Sol:使用insert和update触发器。 SP不会在这里解决你的问题。

在该触发器脚本中,使用按日期修改为键列的顺序来获取最新的带有dense_rank的vaule,以评估多个值的最新记录。

希望这能解决你的问题