SQL选择语句
我的桌子看起来像这样-SQL选择语句,sql,oracle,Sql,Oracle,我的桌子看起来像这样- 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
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_日期的相同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语句来实现这个结果。在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)
不知何故,您需要在生效日期前订购,但这是我的基本想法。这是甲骨文吗?如果是这样,您可以使用超前和滞后函数…粘贴时最有可能出现问题。。检查答案,因为它似乎没有意义。请使其可读。我不允许粘贴图片您使用的是什么数据库引擎?谢谢Matt。我使用Oracle。。我需要做什么改变才能使它在那里工作?