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

时间:2019-07-17 12:10:42

标签: 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              YYY     500
6   2              YYY     400

我在某些陈述中的期望:

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用窗口功能:

string[] doubleArray = Regex
  .Split(strValue, @"[^0-9\.]+")
  .Where(c => c != "." && c.Trim() != "")
  .ToArray();  // here i have used toarray 

var doubleArray = Regex
  .Split(strValue, @"[^0-9\.]+")
  .Where(c => c != "." && c.Trim() != ""); // and here i have used var

如果您正在考虑更新值,那么我将挑战数据模型。在这种情况下,该值可能应该存储在定义了select t.*, max(case when transactiontype = 1 then value end) over (partition by orderid) as new_value from t; 的{​​{1}}表中。