SQL Server添加一列并根据多列中的条件填充多行

时间:2019-03-12 15:41:40

标签: sql-server

我有一个看起来像这样的表:

Timestamp          CPID    Con    Context    Type   Value
2018-01-01 03:11    1       2       6         8       0
2018-01-01 03:11    1       2       3         8       0
2018-01-01 03:11    1       2       3         3       100
2018-01-01 03:15    2       1       6         8       16
2018-01-01 03:15    2       1       3         8       15
2018-01-01 03:15    2       1       3         3       200

我想添加一个名为new_column的列,并在Value=0时将Context=6填充为1。我想将Timestamp,CPID和Con视为一个组,以便当给定组具有Context=6时,该组中的其他行在new_column中也分配为1。结果将如下所示:

Timestamp          CPID    Con    Context    Type   Value    new_column
2018-01-01 03:11    1       2       6         8       0       1
2018-01-01 03:11    1       2       3         8       0       1
2018-01-01 03:11    1       2       3         3       100     1
2018-01-01 03:15    2       1       6         8       16      0
2018-01-01 03:15    2       1       3         8       15      0
2018-01-01 03:15    2       1       3         3       200     0

注意:行顺序并不总是相同的,所以我不能每次都填写2行;我也不能直接更改ALTER Table,因为它是只读的。

我还是SQL的新手,所以在这个方面很挣扎。

1 个答案:

答案 0 :(得分:0)

您可以使用view创建一个exists

select t.*,
      (case when exists (select 1 
                         from table t1  
                         where t1.Timestamp = t.Timestamp and t1.CPID = t.CPID and 
                               t1.Con = t.Con and (t1.Context = 6 or t1.Value = 0)
                        )
            then 1 else 0 
       end) as new_column
from table t;