2015-12-21 2 views
1

У меня проблема с запросом. Я попытался найти ответ, но не смог его найти.Запрос на обновление одной строки на основе другой

У меня есть 2 ряда для некоторых сотрудников в моем столе. Я хочу сохранить последние и удалить старые. Но до этого я хочу обновить несколько нулевых столбцов моих новых строк из данных из старых строк одного и того же сотрудника. Например.

enter image description here

Я хочу обновить идентификаторы 1 и 3, так что только нулевые столбцы обновляются и ненулевые столбцы не обновляются, так что данные становятся

Результат должен быть, как:

enter image description here

можно удалить дубликаты в конце, потому что идентификаторы старых данных в известной последовательности.

Пожалуйста, помогите! Благодаря!

+1

Добавить уникальное ограничение для employee_no. (И это не повторится снова ...) – jarlh

+0

Это произошло потому, что я интегрирую данные из какой-либо другой базы данных в свою базу данных. – Umar

ответ

1

Вы можете попробовать что-то вроде:

UPDATE EMP1 
SET 
    Name = CASE 
       WHEN EMP2.Name IS NULL THEN EMP2.Name 
      END 
FROM 
    Employee AS EMP1 
    INNER JOIN Employee AS EMP2 ON EMP1.Employee_no = EMP2.Employee_no AND EMP1.ID <> EMP2.ID 
+0

SQL Command неправильно закончила ошибку :( – Umar

+0

Какой тип базы данных у вас есть? MSSQL, Oracle, MySQL? Некоторые семантики могут отличаться в предложении update (это решение относится к MSSQL) – tvmannetjie

+0

im using oracle: \ – Umar

0

Вы можете обновить его как:

UPDATE employee e 
set dob = (
    select db from (
    select dob 
      over (partition by dob order by employeeno) db 
    from employee 
) ee 
    where ee.employeeno = e.employeeno 
) 
Смежные вопросы