从连续的邮政编码创建范围

时间:2016-03-16 19:38:21

标签: sql-server sql-server-2008 tsql

我有一个带有开始和结束邮政编码的区域表,但它分别加载了每个邮政编码。我现在需要创建一个报告,在指定的区域中显示拉链,但它返回一堆记录。我想要做的是从这个连续拉链列表中创建一个范围。

我的表格包含以下内容

FromZip ToZip
07543   07543
07604   07604
07509   07509
07510   07510
07511   07511
07512   07512
07513   07513
07514   07514

我想返回

FromZip ToZip
07543   07543
07604   07604
07509   07514

1 个答案:

答案 0 :(得分:1)

请尝试以下查询

select 
  MIN(FromZip) as FromZip, 
  MAX(ToZip) as ToZip
from 
 (
  Select 
   *, 
   ROW_NUMBER() OVER(ORDER BY ToZip asc) as ranking 
   from tbl
 ) t  
 group by 
   (CAST(ToZip AS INT)-Ranking)
 order by 
   (CAST(ToZip AS INT)-Ranking)

<强> Live SQL demo here