SQL - 同一组中最近的记录

时间:2014-01-19 23:08:54

标签: sql sql-server

我正在尝试将类型为y的记录分配为父ID。如果存在类型x的记录具有相同的位置,或者该位置比类型y记录小5以内,并且它在同一组内,那么我需要将该记录ID分配为父ID。可能有多个x记录满足这个条件所以我需要采取最近的。

要清楚,如果类型为Y且目标为x,则只能设置parentid。类型X不能有parentid。

希望这些前后表能够展示我想要做的事情。

enter image description here

enter image description here

我打算在代码中执行此操作,但希望可以在SQL中执行此操作。如果影响答案,我正在使用SQL服务器?

非常感谢任何帮助。

干杯

吉姆

1 个答案:

答案 0 :(得分:1)

我会用相关的子查询来解决这个问题:

update t
    set ParentId = (select top 1 id
                    from table t2
                    where t2."type" = 'x' and
                          t2."group" = t."group"
                          t2.location between t.location - 5 and t.location
                    order by location
                   )
    from table t
    where "type" = 'y';