Отличительные ценности - PullRequest
2 голосов
/ 21 июля 2009

У меня есть таблица с названием штата, города, города и почтовым индексом. Почтовый индекс содержит повторяющиеся данные, так как некоторые почтовые индексы имеют несколько городов. Теперь мне нужен запрос, чтобы вернуть все 4 столбца, однако я не хочу повторять почтовый индекс в результатах. Я только хочу вернуть 1 запись на почтовый индекс. Там, где есть несколько городов, я хотел бы вернуть "-----------" в записях результатов, чтобы указать несколько городов.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 21 июля 2009
SELECT CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(Town) END AS Town, Zip
FROM YourTable
GROUP BY Zip

Редактировать: , если вы также хотите вернуть другие поля, такие как State, просто добавьте, например ::

SELECT 
    CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(Town) END AS Town, 
    CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(State) END AS State, 
    Zip
FROM YourTable
GROUP BY Zip
0 голосов
/ 21 июля 2009

Я предполагаю, что почтовые индексы могут относиться только к одному городу и штату.

SELECT State
, City
, CASE WHEN MAX(Town) <> MIN(Town) THEN '-------' ELSE MAX(Town) END as Town
, ZipCode
FROM data
GROUP BY State, City, ZipCode

что-то подобное? Не уверен, насколько он эффективен по сравнению с другими вариантами.

РЕДАКТИРОВАТЬ: Я согласен, что COUNT является более ясным способом выразить это

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