我有一个表,其中包含一个Varchar列“ Zip”,其中包含一些5位邮政编码(例如12345)和一些Zip + 4邮政编码(例如12345-9999)。它们都是独一无二的。
如何仅查找前5个字符的重复(或唯一)值?
运行此命令时,我得到29,722条记录,这是表中的总记录,并且我可以清楚地看到Zip 00690和00690-7998均已返回。
SELECT ZIP
FROM tblSTKUniqueZip
GROUP BY ZIP
HAVING COUNT(LEFT(ZIP,5)) = 1
运行此命令时,我得到零记录
SELECT ZIP
FROM tblSTKUniqueZip
GROUP BY ZIP
HAVING COUNT(LEFT(ZIP,5)) > 1
我对HAVING子句不了解什么。我希望它能剩下5个字符,并给我唯一的字符或重复的字符。
答案 0 :(得分:2)
您需要同时select
和group by
左5个字符。完成分组后,可以使用count(*)
确定该组中的实际行数。试试这个:
SELECT LEFT(ZIP,5), count(*)
FROM tblSTKUniqueZip
GROUP BY LEFT(ZIP,5)
HAVING COUNT(*) > 1