2015-07-07 5 views
0

В настоящее время я пытаюсь проверить наши системы на недопустимую информацию. Я хочу сравнить company_address с моей таблицей xro_zips, которая имеет City, State, Zipcode. Я могу вернуть некоторые почтовые индексы, которые не совпадают между этими двумя таблицами, но я также хотел бы возвращать неправильные названия городов и аббревиатуры состояний, где почтовые индексы соответствуют двум таблицам.Неверный город, штат, аудит Zipcode

Это то, что я до сих пор ..

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 

Любая помощь будет большим. Спасибо заранее.

+1

Вы хотите отдельные запросы для различных несовпадений или одного запроса, который возвращает столбцы идентификации всех вопросов с каждой проблемной строкой, например 'CityMismatch' (бит)? – HABO

+0

Если бы у меня был один запрос, который идентифицировал бы все проблемы, это было бы здорово. – HKImpact

ответ

0

Такого рода вещи должен дать все несоответствия:

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' 
Смежные вопросы