独特的价值观

时间:2009-07-21 14:37:24

标签: sql db2

我有一张包含State,City,Town和Zip代码的表格。邮政编码有重复的数据,因为一些邮政编码有多个城镇。现在我需要一个查询来返回所有4列,但我不想在结果中重复输入邮政编码。我只想为每个邮政编码返回1条记录。如果有多个城镇,我想在结果记录中返回“-----------”以表示多个城镇。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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
那样的东西?不确定它与其他选项的效率如何。

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