Sql 有条件地将值从一行复制到另一行

Sql 有条件地将值从一行复制到另一行,sql,tsql,Sql,Tsql,我想使用条件写选择将值从一行复制到另一行,并且该条件将按TRANSACTIONTYPE执行。 每个订单id的每一行都应具有TRANSACTIONTYPE=1的值 我的示例表 ID TRANSACTIONTYPE ORDERID VALUE 1 1 XXX 100 2 2 XXX 120 3 4 XXX 140 4 2 XXX 120 5 1

我想使用条件写选择将值从一行复制到另一行,并且该条件将按TRANSACTIONTYPE执行。 每个订单id的每一行都应具有TRANSACTIONTYPE=1的值

我的示例表

ID TRANSACTIONTYPE ORDERID VALUE
1   1              XXX     100
2   2              XXX     120
3   4              XXX     140
4   2              XXX     120
5   1              YYY     500
6   2              YYY     400
我对select Station的期望:

ID TRANSACTIONTYPE ORDERID VALUE
1   1              XXX     100
2   2              XXX     100
3   4              XXX     100
4   2              XXX     100
5   1              YYY     500
6   2              YYY     500

我已尝试为此编写相同的选择语句,但失败了

您可以使用窗口功能:

select t.*,
       max(case when transactiontype = 1 then value end) over (partition by orderid) as new_value
from t;

如果您正在考虑更新值,那么我将挑战数据模型。在这种情况下,该值可能应该存储在
orders
表中,其中定义了
orderid

非常感谢。完美地工作