微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于exist和lag更新

如何解决基于exist和lag更新

具有id,纬度,经度,人的tableX。 ID是PK和汽车公司。我需要通过以下检查使用随机坐标对(我有算法)来更新纬度和经度:

第1步:检查同一个人的姓名是否已经获得坐标。如果是,则为同一个添加与以前相同的个人。如果否,请转到步骤2。 第2步:添加生成新的随机对并将其分配。

我该如何解决

下面的代码(显然不起作用)。但是代码的问题是控制台日志显示事务被终止而没有循环:

DECLARE @COUNT INT = 1
WHILE @COUNT < 10000
    BEGIN
        IF EXISTS(SELECT LAG(latitude) over (PARTITION BY person ORDER BY id DESC) FROM TableX)
            BEGIN
                UPDATE TableX
                SET latitude  = (SELECT LAG(latitude) over (partition by person ORDER BY id DESC) FROM TableX),longitude = (SELECT LAG(longitude) over (partition by person ORDER BY id DESC) FROM TableX)
                WHERE @COUNT = id

                SET @COUNT += 1
            END

        ELSE
            BEGIN
                DECLARE
                    @MAX_LONG FLOAT = 50.123249,@MIN_LONG FLOAT = 44.978349,@MIN_LAT FLOAT = 38.484407,@MAX_LAT FLOAT = 41.731154,@LON FLOAT = ROUND(RAND() * (@MAX_LONG - @MIN_LONG + 1) + @MIN_LONG,6),@LAT FLOAT = ROUND(RAND() * (@MAX_LAT - @MIN_LAT) + @MIN_LAT,6)

                UPDATE TableX
                SET latitude  = @LAT,longitude = @LON
                WHERE id = @COUNT
                SET @COUNT += 1
            END
    END

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。