我的表看起来像这样 -
EFF_DATE ID Col_A Col_B Col_C
01/01/1900 1122334 N N N
12/01/2010 1122334 NULL Y Y
12/02/2010 1122334 Y NULL NULL
12/21/2010 1122334 NULL NULL NULL
01/01/1900 44555222 N N N
12/02/2010 44555222 NULL NULL NULL
01/01/1900 897969595 N N N
11/22/2010 897969595 Y NULL NULL
01/01/1900 897969596 N N N
11/22/2010 897969596 Y NULL NULL
现在,我需要为每条记录填充所有列,以便如果日期Col_A为NULL,则应该为前一个eff_date中的相同Id填充Col_A的值。
这是我想要的解决方案 -
EFF_DATE ID Col_A Col_B Col_C
01/01/1900 01122334 N N N
12/01/2010 01122334 N Y Y
12/02/2010 01122334 Y Y Y
12/21/2010 01122334 Y Y Y
01/01/1900 044555222 N N N
12/02/2010 044555222 N N N
01/01/1900 897969595 N N N
11/22/2010 897969595 Y N N
01/01/1900 897969596 N N N
11/22/2010 897969596 Y N N
请帮忙! 我想使用简单的SELECT语句来实现这个结果。
答案 0 :(得分:-1)
在mysql中
UPDATE tbL_table
JOIN (SELECT EFF_DATE, COl_A, @x:=@x+1 AS rnum FROM tbl_table) a ON a.EFF_DATE=tbl_table.EFF_DATE
JOIN (SELECT EFF_DATE, COl_A, @y:=@y+1 AS rnum FROM tbl_table) b ON b.rnum+1=a.rnum
JOIN (SELECT @x:=0, @y:=0) as vars on true
SET Col_A=IF(Col_A IS NULL, b.Col_A , Col_A)
你需要以某种方式通过eff_date订购,但这就是我将如何做的基本想法。