2013-06-28 57 views
0

是否有可能根據文本函數在sql中進行計數?我想計算一個郵政編碼的實例(它的類型爲DECIMAL),但是,某些行具有5位數的郵政編碼,而其他郵政編碼具有9位數的郵政編碼。SQL計數與文本比較

我當前的查詢:

select patzip, count(patzip) as zip_count 
from patdemo_t 
where patstate='KY' 
group by patzip 
order by zip_count desc 
+0

你使用了哪個數據庫? – JohnFx

+0

SQL Server 2005,在這種情況下。 –

回答

0

修訂

SELECT SUBSTRING(CONVERT(VARCHAR(9),patzip), 1, 5) zip, COUNT(*) zip_count 
    FROM patdemo_t 
WHERE patstate = 'KY' 
GROUP BY SUBSTRING(CONVERT(VARCHAR(9), patzip), 1, 5) 
ORDER BY zip DESC 

輸出示例:

 
| ZIP | ZIP_COUNT | 
--------------------- 
| 41017 |   2 | 
| 41016 |   1 | 

這裏是SQLFiddle演示

+0

這給了我總數。我需要每個5位數的郵政編碼。我需要根據給定州的郵政編碼進行人口普查。現在,我有: 選擇patzip,從patdemo_t 計數(patzip)作爲zip_count 其中patstate =「KY」 組由patzip 爲了通過zip_count遞減 這給了我所有的郵政編碼,和計數,但是,它以不同的方式處理每個代碼。我需要前5位數字作爲計數的基礎。因此,41017和410179876會增加41017的計數。 –

+0

@StevenThompson查看更新的答案 – peterm

+0

所以我認爲這將起作用,除了patzip字段是十進制類型,顯然你不能在子字符串函數中使用。 –