2015-03-11 2 views
-3

У меня есть таблица Employee, из которой мне нужно извлечь всю демографическую информацию.SQL Как удалить завершающие символы из поля, вызывающего дублирование данных

Проблема в том, что существует поле с именем UNIQUE_ID, которое вызывает дубликаты, но SQL не считает, что дубликаты.

Объяснение: Поле UNIQUE_ID содержит данные, как этот «ABCD001» «ABCD002» ЭСТ, но тогда у меня такая же unique_id с символами в конце, как этот «ABCD001 (ME)» «ABCD001 (ME) (МП) '' ABCD001 (ME) (MP) (UA) '.

Таким образом, этот же сотрудник ABCD001 повторяет себя 3 раза. Я хотел бы удалить эти символы в конце, чтобы отражать только ID с помощью (ME) (MP) (UA) и появляться только один раз. Также могут быть идентификаторы без дополнительных символов в скобках в конце, которые являются точными или идентификаторами с более чем тремя разными символами внутри скобок, такими как ABCD001 (ME) (MP) (UA) (UG) (PB) и т. Д.

Любые предложения будут оценены. Спасибо

+0

Пожалуйста, перепишите свой вопрос с лучшим форматированием, чтобы было легче читать. –

+2

Значения, которые вы отправили, НЕ совпадают. Похоже, вы хотите взять эту колонку, которая, по-видимому, содержит две части информации и отделяет их? Не совсем ясно, что вы на самом деле пытаетесь сделать здесь. –

ответ

0
select 
    case 
     when idx=0 -- if unique_id doesn't contain brakets 
     then UNIQUE_ID -- then select it 
     else LEFT(UNIQUE_ID , idx-1) -- else select substring 
    end as UNIQUE_ID_trimmed, 
    * 
from 
(select 
    *, 
    CHARINDEX('(', UNIQUE_ID, 0) as idx 
    from Employee 
) T 
0
SELECT Unique_id = SUBSTRING(UNIQUE_ID, 0, CHARINDEX('(', UNIQUE_ID)) 
FROM Employee 
GROUP BY SUBSTRING(UNIQUE_ID, 0, CHARINDEX('(', UNIQUE_ID)) 

Вы можете удалить предложения GROUP BY, если вы хотите вернуть dupplicated строки.

+0

Спасибо всем за примеры. – clos82

Смежные вопросы