我有一个看起来像这样的表:
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的新手,所以在这个方面很挣扎。
答案 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;