Как я могу объединить дубликаты записей в одном - PullRequest
0 голосов
/ 19 мая 2018

Это немного сложно, я надеюсь, что я могу прояснить этот вопрос, потому что это не очень распространенная проблема (или, может быть, это так).

У меня есть таблица, в которой есть повторяющиеся записи, подобные этой(я говорю о сотнях):

|   Code|Route|State|City|Start| End|Style|
|-----------------------------------------|
|    R14|   14|   NL| MTY|  Ind|Main| High|
| R14-01|   14|   NL| MTY|  Ind|Main| High|
|  R15-1|   15|   NL| MTY|  Cal| Cle|  Low|
|   R15B|   15|   NL| MTY|  Cal| Cle|  Low|
|  R14-2|   14|   NL| MTY|  Ind|Main| High|
| RT15th|   15|   NL| MTY|  Cal| Cle| High|
|  RT15°|   15|   NL| MTY|  Cal| Cle| High|
|  R15.3|   15|   NL| MTY|  Cal| Cle|  Low|
| RT15/H|   15|   NL| MTY|  Cal| Cle| High|

Мне нужно получить ответ, подобный следующему:

| Code|Route|State|City|Start| End|Style|
|---------------------------------------|
|  R14|   14|   NL| MTY|  Ind|Main| High|
|  R15|   15|   NL| MTY|  Cal| Cle|  Low|
| RT15|   15|   NL| MTY|  Cal| Cle| High|

Я уже создал запрос, который группирует результаты по Маршруту, Штату,Город, Начало, Конец и Стиль;это было очень легко.

SELECT DISTINCT Route, State, City, Start, End, Style FROM Routes;

Если вы видите, что столбец Код - единственный, который вызывает проблемы.Мне нужно сгруппировать этот столбец по аналогично коду (пересекаются символы и их позиции R14, R14-01, R14-2 => R14 и R15-1, R15-2 => R15- и R15, R15-1 => R15)

Любая идея, как я могу получить эти пересечения?

Чтобы уточнить столбец Код беспорядок,Есть много символов, которые используют в качестве ограничителей.Таблица не такая короткая, я говорю о тысячах записей и некоторых из них имеют эту проблему.Я немного расширил таблицу, чтобы вы могли лучше понять, чего я добиваюсь.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Та же общая идея, что и в ответе Гордона, немного другая деталь.

select distinct case
when code like '%-' then code -- ends in hyphen
else substr(code, 1, 3) end thecode
, etc
0 голосов
/ 19 мая 2018

Вы можете сделать:

select (case when code in ('R14', 'R14-01', 'R14-2') then 'R14'
             when code in ('R15-1', 'R15-2') then 'R15-'
             when code in ('R15', 'R15-1') then 'R15'
             else code
        end) as newcode, Route, State, City, Start, End, Style
from t
group by newcode, Route, State, City, Start, End, Style;

Замечу, что R15-1 назначен двум категориям.

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