Фильтровать список адресов в отдельном списке почтовых индексов - PullRequest
1 голос
/ 25 апреля 2019

Я хочу отфильтровать длинный список адресов на основе того, содержат ли они какой-либо из нескольких почтовых индексов, как мне структурировать SQL-запрос?

Адреса выглядят так

+------------------------------------------+
|              address                     |
+------------------------------------------+
| 69, example entry road, London, wa13 657 |
| 87, example entry road, London, eC2B 984 |
+------------------------------------------+

Почтовые индексы, подобные этому

+-----------+
| Postcodes |
+-----------+
| Wa13 657  |
| eC2B 984  |
| eq8 987   |
+-----------+

В таблице адресов есть столбец ID

Самое близкое, что я получил, это следующее:

SELECT p.Postcodes, COUNT(*)
FROM [City Postcodes] AS p 
INNER JOIN [17-18] AS a ON (a.[Address], p.Postcodes) > 0
GROUP BY p.Postcodes;

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

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Итак, вы просто хотите JOIN без агрегирования?

SELECT a.*, p.Postcode
FROM [17-18] AS a INNER JOIN
     [City Postcodes] AS p
     ON instr(a.[Address], p.Postcodes) > 0;

Вы можете добавить предложение WHERE, если вам нужны только определенные почтовые индексы.

Обратите внимание, что это не вернет адреса, которые не соответствуют таблице почтовых индексов. Если вы хотите все адреса, используйте LEFT JOIN.

0 голосов
/ 25 апреля 2019

Если я правильно вас понимаю, вы хотите, чтобы все идентификаторы были сгруппированы по почтовым индексам.Вы можете сделать это с помощью функций конкатенации или с помощью Oracle, LISTAGG:

SELECT p.POSTAL, LISTAGG(a.ID, ',') WITHIN GROUP (ORDER BY p.POSTAL) ids 
FROM Address a 
INNER JOIN Postcodes p ON a.POSTAL LIKE p.POSTAL 
GROUP BY p.POSTAL;

Я создал скрипту sql, где вы можете проверить код: http://www.sqlfiddle.com/#!4/ca6844/1

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