我有一个包含4列的表
对于Col2上的每个id和Col1上的每个值= c,我需要使用具有相同ID且值为a和b的记录上的最新日期(来自列数据)更新Column DataNew在Col1
以下是更新后DataNew的示例。
Col1|Col2|Data |DataNew
----|----|----------|-----------
a |x |12/05/2013|
b |x |12/04/2013|
c |x |12/09/2013|12/04/2013
b |x |12/08/2013|
a |f |12/06/2014|
b |f |12/04/2014|
c |f |12/09/2014|12/06/2014
d |f |12/08/2014|
(2013年12月12日= 12月5日)
UPDATE TAT_Test
SET DataNew =
(select top 1 MAX(Data)
from TAT_Test
where Col1 IN ('a','b')
)
where Col1 IN ('c')
这是我的尝试但不确定如何在嵌套查询中显示我正在寻找Col1 =当前记录
谢谢!
答案 0 :(得分:0)
如果您的数据表已命名为" tbl"然后试试这个:
update tbl
inner join (
select max(data) as "new", col2 from tbl where col1 in ('a','b') group by col2
) as upd on (upd.col2=tbl.col2)
set tbl.DataNew=upd.new where tbl.col1='c';
答案 1 :(得分:0)
我认为这可能是你想要的:
UPDATE TAT_Test
SET DataNew =
(SELECT MAX(Data)
FROM TAT_Test WHERE Col1 IN ('a','b') AND Col2 = t.Col2 )
FROM TAT_Test t
WHERE t.Col1 = 'c'
它提供以下输出:
Col1 Col2 Data DataNew
---- ---- ----------------------- ----------
a x 2013-12-05 01:00:00.000 NULL
b x 2013-12-04 01:00:00.000 NULL
c x 2013-12-09 01:00:00.000 2013-12-08 -- << this is not the row in
b x 2013-12-08 01:00:00.000 NULL -- your sample, but it is
a f 2014-12-06 01:00:00.000 NULL -- the latest for the Col2 id
b f 2014-12-04 01:00:00.000 NULL
c f 2014-12-09 01:00:00.000 2014-12-06
d f 2014-12-08 01:00:00.000 NULL