You can use a recursive CTE http://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx
;WITH cteRecursiveTypes as
(
SELECT baseTypeID = t.ID, typeID = t.ID, t.parentID, VehicleType = t.Name, recLevel = 1
FROM VehicleType t
UNION ALL
SELECT t.baseTypeID, parentT.ID, parentT.parentID as parentID, VehicleType = parentT.Name, recLevel = t.recLevel + 1
FROM cteRecursiveTypes t
INNER JOIN VehicleType parentT on t.parentID = parentT.ID
)
SELECT t.VehicleType, v.Name, recLevel = dense_rank() over(partition by t.baseTypeID order by t.recLevel desc) - 1
FROM Vehicle v
INNER JOIN cteRecursiveTypes t on v.ItemType = t.baseTypeID
ORDER BY 2,1
;