Sql server 2008 不正确的城市、州、Zipcode审核

Sql server 2008 不正确的城市、州、Zipcode审核,sql-server-2008,tsql,Sql Server 2008,Tsql,我目前正试图审核我们的系统是否存在无效信息。我想将公司地址与包含城市、州、Zipcode的xro_zips表进行比较。 我可以返回一些在这两个表之间不匹配的邮政编码,但我还想返回两个表之间邮政编码匹配的不正确的城市名称和州缩写 这就是我到目前为止所拥有的 SELECT DISTINCT 'workplace_base' as [db_id], c.external_id, c.company, ca.city, ISNULL(ca.[state],'') as [state], ISNU

我目前正试图审核我们的系统是否存在无效信息。我想将公司地址与包含城市、州、Zipcode的xro_zips表进行比较。 我可以返回一些在这两个表之间不匹配的邮政编码,但我还想返回两个表之间邮政编码匹配的不正确的城市名称和州缩写

这就是我到目前为止所拥有的

SELECT DISTINCT 'workplace_base' as [db_id], c.external_id, c.company, ca.city, 
   ISNULL(ca.[state],'') as [state], ISNULL(ca.zip_code,'') as zip_code, d.division
FROM Workplace_base.dbo.companies_address ca
   INNER JOIN Workplace_base.dbo.companies c ON ca.company_id = c.company_id
   INNER JOIN Workplace_base.dbo.divisions d ON c.owner_division_id = d.division_id
   LEFT JOIN Workplace_base.dbo.xro_zips z ON ca.zip_code = z.ZipCode
      and ca.[state] = z.[State]
WHERE z.ZipCode IS NULL

任何帮助都会很好。提前谢谢你。

这类事情应该会让所有的差异:

SELECT * FROM (
SELECT DISTINCT 
    'workplace_base' as [db_id], 
    c.external_id, 
    c.company, 
    ca.city AS City1, 
    z.City AS City2, 
    ISNULL(ca.[state],'') as [State1], 
    ISNULL(z.[State],'') as [State2], 
    ca.zip_code as zip_code1,
    z.ZipCode as zip_code2,
    ISNULL(ca.zip_code,'Missing ZIP') as zip_code_check1, 
    ISNULL(z.ZipCode,'Extra ZIP') as zip_code_check2, 
    d.division,
    CASE WHEN ca.city <> z.city THEN 'City Mismatch' ELSE 'OK' END AS CityCheck,    
    CASE WHEN ca.[state] <> z.[state] THEN 'State Mismatch' ELSE 'OK' END AS StateCheck,    
FROM Workplace_base.dbo.companies_address ca
INNER JOIN Workplace_base.dbo.companies c ON ca.company_id = c.company_id
INNER JOIN Workplace_base.dbo.divisions d ON c.owner_division_id = d.division_id
FULL OUTER JOIN Workplace_base.dbo.xro_zips z ON ca.zip_code = z.ZipCode
) AS Comparison
WHERE zip_code1 IS NULL or zip_code2 IS NULL OR CityCheck <> 'OK' OR StateCheck <> 'OK'

您希望对不同的不匹配进行单独查询,还是希望使用一个查询返回列来标识每个问题行中的所有问题,例如CityMismatch位?如果我可以使用一个查询来标识所有问题,那就太好了。