如何在SQL的游标结果集中获取行的最新值

尼罗什·尼古姆(Nilesh nikumbh)

我在以下表的Select语句中使用的同一表上使用Cursor进行某些操作,

CREATE TABLE #nsn (ID INT IDENTITY(1,1)
,Val1 Varchar(MAx)
,Val2 Varchar(MAx)
)

INSERT INTO #nsn(Val1,VAl2) select 'A1','A2'
INSERT INTO #nsn(Val1,VAl2) select 'B1','B2'
INSERT INTO #nsn(Val1,VAl2) select 'C1','C2'
INSERT INTO #nsn(Val1,VAl2) select 'D1','D2'
INSERT INTO #nsn(Val1,VAl2) select 'E1','F2'

SELECT * From #nsn
ID  Val1    VAl2
1|  A1  |   A2
2|  B1  |   B2
3|  C1  |   C2
4|  D1  |   D2
5|  E1  |   F2

使用游标更新Val2栏,

DECLARE @ID INT 
        ,@Val1 Varchar(MAx)
        ,@Val2 Varchar(MAx)

DECLARE cursor_Latest CURSOR
FOR SELECT  ID,Val1,Val2
    FROM    #nsn 
    ORder by 1 asc
OPEN cursor_Latest
FETCH NEXT FROM cursor_Latest INTO  @ID , @Val1 ,@Val2
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    UPDATE #nsn
    SET Val2 = Val2 +'-'+ @Val1 +'-'+@Val2
    WHERE ID = @ID+1

    FETCH NEXT FROM cursor_Latest INTO  @ID , @Val1 ,@Val2
END
close cursor_Latest
DEALLOCATE cursor_Latest

其结果是

SELECT * From #nsn
ID  Val1    VAl2
1|  A1  |   A2
2|  B1  |   B2-A1-A2
3|  C1  |   C2-B1-B2
4|  D1  |   D2-C1-C2
5|  E1  |   F2-D1-D2

但是我期望结果如下

ID  Val1    VAl2
1|  A1  |   A2
2|  B1  |   B2-A1-A2
3|  C1  |   C2-B1-B2-A1-A2
4|  D1  |   D2-C1-C2-B1-B2-A1-A2
5|  E1  |   F2-D1-D2-C1-C2-B1-B2-A1-A2

那么这段代码有什么问题吗?或Cursor是否有任何记录存储的东西,因为它没有获取新行的最新更新值。

提前谢谢您的帮助。

婴儿车

为了达到预期的效果,您应该尝试以下操作,

DECLARE @ID       INT
       ,@Val1     VARCHAR(MAX)
       ,@Val2     VARCHAR(MAX)

DECLARE cursor_Latest CURSOR  
FOR
    SELECT ID,Val1,Val2 FROM   #nsn
    ORDER BY 1 ASC

OPEN cursor_Latest
FETCH NEXT FROM cursor_Latest INTO  @ID , @Val1 ,@Val2
WHILE (@@FETCH_STATUS<>-1)
BEGIN
    IF @ID=1
    BEGIN
        UPDATE #nsn
        SET    Val2     = Val2+'-'+@Val1+'-'+@Val2
        WHERE  ID       = @ID+1
    END
    ELSE
    BEGIN
        UPDATE #nsn
        SET    Val2   = Val2+'-'+@Val1+'-'+@Val2+'-'+( SELECT Val1+'-'+Val2 FROM   #nsn WHERE  ID     = @ID-1)
        WHERE  ID                = @ID+1
    END 

    FETCH NEXT FROM cursor_Latest INTO @ID , @Val1 ,@Val2
END
CLOSE cursor_Latest
DEALLOCATE cursor_Latest

SELECT * FROM   #nsn
DROP TABLE  #nsn

SQL小提琴演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SQL Server中获取最新和最近的值

来自分类Dev

如何获取mongo结果集中的项目索引

来自分类Dev

如何获取SQL中的最新行?

来自分类Dev

如何在Oracle SQL中将多个行值返回到一个游标变量中?

来自分类Dev

如何仅使用Java获取类型为Forward的结果集中的上一行值

来自分类Dev

如何从排序集中获取最新数据?

来自分类Dev

如何在Matlab数据集中的行中更新几个值?

来自分类Dev

如何在mysqli中获取结果/行

来自分类Dev

如何从SQL结果集中删除空白行

来自分类Dev

SQL:如何在冲突类型的并集中替换值

来自分类Dev

如何从Cassandra结果集中获取嵌套地图

来自分类Dev

如何在SQL中获取第n行的值

来自分类Dev

如何在结果集中获取列表?

来自分类Dev

如何在包含相同ID的文件集中获取最新文件的路径?

来自分类Dev

如何在程序集中的行中临时存储值?

来自分类Dev

SQL:如何获取无序列的最新值

来自分类Dev

从Mule的结果集中获取特定值

来自分类Dev

如何仅使用Java获取类型为Forward的结果集中的上一行值

来自分类Dev

如何在sql中获取具有指定值的行?

来自分类Dev

如何在json格式数据集中获取最高值?

来自分类Dev

在结果集中查找SQL值

来自分类Dev

每组行获取最新的2个值SQL Server 2000

来自分类Dev

如何在不使用PIVOT的情况下以列vs值而不是行的方式获取sql select查询结果

来自分类Dev

如何在SQL中将行值作为列获取?

来自分类Dev

如何在Crystal Reports的结果集中通过索引获取字段值?

来自分类Dev

SQL-在结果集中获取每个属性的TOP值

来自分类Dev

如何在一行中获取 postgreSQL 中的 2 个最新值?

来自分类Dev

如何在结果集中为不同的 id 插入虚拟行

来自分类Dev

无法从结果集中获取行

Related 相关文章

  1. 1

    如何在SQL Server中获取最新和最近的值

  2. 2

    如何获取mongo结果集中的项目索引

  3. 3

    如何获取SQL中的最新行?

  4. 4

    如何在Oracle SQL中将多个行值返回到一个游标变量中?

  5. 5

    如何仅使用Java获取类型为Forward的结果集中的上一行值

  6. 6

    如何从排序集中获取最新数据?

  7. 7

    如何在Matlab数据集中的行中更新几个值?

  8. 8

    如何在mysqli中获取结果/行

  9. 9

    如何从SQL结果集中删除空白行

  10. 10

    SQL:如何在冲突类型的并集中替换值

  11. 11

    如何从Cassandra结果集中获取嵌套地图

  12. 12

    如何在SQL中获取第n行的值

  13. 13

    如何在结果集中获取列表?

  14. 14

    如何在包含相同ID的文件集中获取最新文件的路径?

  15. 15

    如何在程序集中的行中临时存储值?

  16. 16

    SQL:如何获取无序列的最新值

  17. 17

    从Mule的结果集中获取特定值

  18. 18

    如何仅使用Java获取类型为Forward的结果集中的上一行值

  19. 19

    如何在sql中获取具有指定值的行?

  20. 20

    如何在json格式数据集中获取最高值?

  21. 21

    在结果集中查找SQL值

  22. 22

    每组行获取最新的2个值SQL Server 2000

  23. 23

    如何在不使用PIVOT的情况下以列vs值而不是行的方式获取sql select查询结果

  24. 24

    如何在SQL中将行值作为列获取?

  25. 25

    如何在Crystal Reports的结果集中通过索引获取字段值?

  26. 26

    SQL-在结果集中获取每个属性的TOP值

  27. 27

    如何在一行中获取 postgreSQL 中的 2 个最新值?

  28. 28

    如何在结果集中为不同的 id 插入虚拟行

  29. 29

    无法从结果集中获取行

热门标签

归档