我有一张包含State,City,Town和Zip代码的表格。邮政编码有重复的数据,因为一些邮政编码有多个城镇。现在我需要一个查询来返回所有4列,但我不想在结果中重复输入邮政编码。我只想为每个邮政编码返回1条记录。如果有多个城镇,我想在结果记录中返回“-----------”以表示多个城镇。
我该怎么做?
答案 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是一种更清晰的表达方式