0

T-SQL範囲にギャップがあるすべての郵便番号を検索するクエリを作成しようとしていzip4ます。私のデータのサンプルテーブルは次のとおりです。

郵便番号の範囲:

Zip    minRangeZip4    maxRangeZip4

85005    0                  6505
85005    6506                9999
85006     0                  5555
85006     5559               9999

zip4の範囲の間にギャップがあることを取得するクエリをどのように作成します85006か?

4

3 に答える 3

0

各行の最大範囲と最小範囲の差を取り、郵便番号ごとにそれらの差を合計すると、完全な範囲を持たない郵便番号を特定できます。差額の合計は、隙間のないzipの場合は10,000、隙間のあるzipの場合は10,000未満になります。

SELECT zip, SUM(maxRangeZip4-minRangeZip4+1) 
FROM zips
GROUP BY zip
HAVING SUM(maxRangeZip4-minRangeZip4+1) <> 10000

SQL Fiddleでのデータ設定の例を次に示します。これを SQL Server 2008 でテストしましたが、他のデータベース バージョンでも動作するはずです。

注: maxRangeZip4 と minRangeZip4 の差を取るときは、コードのカウントに最小値を含める必要があるため、1 を加算する必要があります。

于 2013-08-20T16:26:46.700 に答える