2009-07-21 69 views
2

我有一张桌子上有州,市,镇和邮政编码。邮政编码有重复的数据,因为一些邮政编码有多个城镇。现在我需要一个查询来返回所有4列,但是我不想在结果中重复邮政编码。我只想每个邮政编码返回1条记录。如果有多个城镇,我想在结果记录中返回“-----------”以表示多个城镇。Distinct Values

我该怎么做?

回答

2
SELECT CASE WHEN COUNT(Town) > 1 THEN '-----' ELSE MIN(Town) END AS Town, Zip 
FROM YourTable 
GROUP BY Zip 

编辑:,如果你也想返回其他领域,如国家,只需添加上如:

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

我假设邮政编码只能与一个城市,州。

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

soomething like that?不知道它与其他选项有多高效。

编辑:我同意COUNT是一种更清晰的方式来表达这