Оператор SQL SELECT - PullRequest
       5

Оператор SQL SELECT

1 голос
/ 21 декабря 2010

Мой стол выглядит так -

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, оно должно было заполнить значение Col_A для того же идентификатора из предыдущего eff_date.

Это решение, которое я хочу -

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 для достижения этого результата.

1 Ответ

0 голосов
/ 21 декабря 2010

в 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, но это основная идея того, как я это сделаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...