Подтвердить лицо без значения в столбце даты - PullRequest
1 голос
/ 20 марта 2012

У меня есть стол с несколькими сотрудниками.У них есть следующие столбцы empid, datecolumn1, is_valid.

Очень немногие сотрудники имеют более одной записи в таблице.Если у сотрудника есть более одной записи в таблице, я хотел бы «сделать недействительной» одну из записей при следующем условии: 1. Если у сотрудника есть более одной записи в таблице, то запись без значения в datecolumn1 будетдействительный (обновление is_valid до 1), а запись со значением в datecolumn1 недействительна (обновление is_valid до 0).

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Как указывает Бен, вы заявили, что если datecolumn1 равно NULL, вы хотите, чтобы столбец is_valid был установлен в 0 и 1. Предполагая, что вы это исправите, вам, возможно, придется скорректировать этот оператор CASEв зависимости от того, какой способ вы считаете правильным.

UPDATE employees 
   SET is_valid = (CASE WHEN datecolumn1 IS NULL
                        THEN 1
                        ELSE 0
                    END)
 WHERE empid IN (SELECT e.empid
                   FROM employees e
                  GROUP BY emempid
                 HAVING COUNT(*) > 1)
1 голос
/ 20 марта 2012

создайте промежуточную таблицу и заполните ее с помощью SELECT на исходной таблице с идентификатором сотрудника GROUP BY (или любым другим вашим уникальным идентификатором). Создайте вторую промежуточную таблицу и заполните ее, выбрав на исходной таблице и исключив все строки, которые соответствуют строкам в вашей сгруппированной таблице. Теперь у вас есть таблица, которая содержит только людей с несколькими строками. Из исходной таблицы установите для is_valid значение 0 во всех строках, которые соответствуют идентификатору сотрудника во второй промежуточной таблице и также не имеют datecolumn1 (или, возможно, также имеют datecolumn1 - ваш вопрос на момент написания этой статьи немного неясен.) И is_valid to 1 на других. После этого удалите промежуточные таблицы, и вы получите то, что вам нужно.

Вы также можете сделать это с помощью одного более сложного вызова с множественным выбором, но я считаю полезным использовать промежуточные таблицы, когда все усложняется.

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