【问题标题】:How to accesses data from a subsequent row in the same result set如何访问同一结果集中后续行的数据
【发布时间】:2020-11-13 07:04:54
【问题描述】:

我需要将参考交易数量列更新为交易数量,但就像参考数量中使用 2050 数量一样,之后需要将交易数量列更新为 1500,您可以在交易数量列中看到,然后一一更新。

你能告诉我怎么做吗?

所需的输出应该是(在带有ReferenceTradeQty = 2050 的行之后):

ReferenceTradeQty
-----------------
1500.00000000
1500.00000000
2100.00000000
6550.00000000
6300.00000000

【问题讨论】:

  • "insert row in reverse order"(如标题所说)在 SQL 中没有意义。
  • 好吧,这可能是逻辑,但有图片解释
  • 不清楚。至少分享愿望输出。
  • 期望的输出应该在 2050 年之后 数量 RefrenceTradeQty 1500.00000000 1500.00000000 2100.00000000 6550.00000000 6300.00000000

标签: sql sql-server sql-server-2012


【解决方案1】:

您可以使用LEAD 函数从下一行获取信息。 一个指示性答案是here

SELECT t.*, LEAD(TradeQty,1) OVER (ORDER BY AIFTradeDetailsID)
FROM t

【讨论】:

  • @Asad 。 . .您的问题指定您要更新数据。然而,您已经接受了一个SELECT,而不是UPDATE 的答案。这令人困惑。
【解决方案2】:

您可以在UPDATE 语句中使用LEAD() 窗口函数作为

WITH t2 AS
(
 SELECT *,LEAD(AllotedTradeQty) OVER (ORDER BY Row_num) AS ReferenceTradeQty2
   FROM t
)
UPDATE t
   SET ReferenceTradeQty = t2.ReferenceTradeQty2
  FROM t2
 WHERE t.Row_num = t2.Row_num

Demo

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2022-12-09
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多