USE [AdventureWorks]
GO
CREATE VIEW HumanResources.vEmployeeAddress
AS WITH StateProvinceCountryRegion ( StateProvinceID, StateProvinceCode, CountryRegionCode, IsOnlyStateProvinceFlag, StateProvinceName, TerritoryID, CountryRegionName, TerritoryName )
AS ( SELECT Person.StateProvince.StateProvinceID AS StateProvinceID,
Person.StateProvince.StateProvinceCode AS StateProvinceCode,
Person.StateProvince.CountryRegionCode AS CountryRegionCode,
Person.StateProvince.IsOnlyStateProvinceFlag AS IsOnlyStateProvinceFlag,
Person.StateProvince.Name AS StateProvinceName,
Person.StateProvince.TerritoryID AS TerritoryID,
Person.CountryRegion.Name AS CountryRegionName,
Sales.SalesTerritory.Name AS TerritoryName
FROM Person.StateProvince
INNER JOIN Person.CountryRegion ON Person.StateProvince.CountryRegionCode = Person.CountryRegion.CountryRegionCode
INNER JOIN Sales.SalesTerritory ON Person.StateProvince.TerritoryID = Sales.SalesTerritory.TerritoryID
)
SELECT HumanResources.Employee.EmployeeID,
HumanResources.Employee.NationalIDNumber,
HumanResources.Employee.ContactID,
HumanResources.Employee.LoginID,
HumanResources.Employee.ManagerID,
HumanResources.Employee.Title,
HumanResources.Employee.BirthDate,
HumanResources.Employee.MaritalStatus,
HumanResources.Employee.Gender,
HumanResources.Employee.HireDate,
HumanResources.Employee.SalariedFlag,
HumanResources.Employee.VacationHours,
HumanResources.Employee.SickLeaveHours,
HumanResources.Employee.CurrentFlag,
Person.Address.AddressID,
Person.Address.AddressLine1,
Person.Address.AddressLine2,
Person.Address.City,
Person.Address.StateProvinceID,
Person.Address.PostalCode,
StateProvinceCountryRegion.StateProvinceCode,
StateProvinceCountryRegion.CountryRegionCode,
StateProvinceCountryRegion.IsOnlyStateProvinceFlag,
StateProvinceCountryRegion.StateProvinceName,
StateProvinceCountryRegion.TerritoryID,
StateProvinceCountryRegion.CountryRegionName,
StateProvinceCountryRegion.TerritoryName
FROM HumanResources.Employee
INNER JOIN HumanResources.EmployeeAddress ON HumanResources.Employee.EmployeeID = HumanResources.EmployeeAddress.EmployeeID
INNER JOIN Person.Address ON HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID
INNER JOIN StateProvinceCountryRegion ON Person.Address.StateProvinceID = StateProvinceCountryRegion.StateProvinceID;
GO
SELECT *
FROM [AdventureWorks].HumanResources.vEmployeeAddress;
GO