小编Ser*_*rge的帖子

UNION ALL 或其他方式返回结果集的第一行

我正在编写一个表值函数来根据其郊区、州和邮政编码对地址进行地理编码。我尝试使用不同的方法对地址进行地理编码,以降低准确性的顺序

  1. 独特的郊区-邮政编码-州组合的精确匹配
  2. 独特的郊区邮政编码组合的精确匹配
  3. 独特的郊区-州组合的精确匹配
  4. 与唯一邮政编码完全匹配
  5. 非唯一邮政编码的近似匹配,其中具有此邮政编码的所有郊区彼此相距在 5 公里以内。

(我用的地理区域,其中郊区,邮政编码国家的关系是工作的所有。许多一对多换句话说,一个郊区可以有多个邮政编码;一个邮政编码可以有多个郊区,在不同的国家可能存在)

以下是表值函数的摘录:

ALTER FUNCTION [geocode].[tvfn_Customer_Suburb_From_Address]
(   
    @Suburb NVARCHAR(100),
    @State NVARCHAR(100),
    @Postcode NVARCHAR(100),
    @Country NVARCHAR(100)
)
RETURNS TABLE 
AS
RETURN 
(

    SELECT TOP 1 *
    FROM (

            -- Unique suburb-postcode-state combinations
            SELECT   s.Suburb_DID
                    ,s.Suburb
                    ,s.State
                    ,s.Postcode
                    ,Geocode_DID = 4 -- Exact match by unique Postcode, Suburb and State
                    ,s.Geocode_Latitude
                    ,s.Geocode_Longitude
            FROM geocode.tSuburbs_XX s
            INNER JOIN [geocode].[tGeocode_Methods] gm
                ON s.Geocode_DID = gm.Geocode_DID

            WHERE s.[Is_Active] = 1
            AND s.[Suburb] = @Suburb …
Run Code Online (Sandbox Code Playgroud)

performance sql-server set-returning-functions query-performance

6
推荐指数
2
解决办法
6193
查看次数