I've updated the code based on your comment. If you need something else, please provide input and output data expected. This is about all I can do based on inference from the existing comments. Further, this isn't intended to give you an exact working solution. My intention was to give you a prototype from which you can build your solution.
The code below is the basic join that you need. However, keep in mind that indexing is probably going to play as big a part in performance as the structure of the table and the query. It doesn't matter how you query the tables if the indexes aren't there to support the queries once you reach a certain size. There are a lot of resources online for indexing but viewing querying plans should be at the top of your list.
As a note, your column [dbo].[Property] ([Name]) should probably be NVARCHAR to allow SQL to minimize data storage. Indexes on that column will then be smaller and searches/updates faster.
DECLARE @Property AS TABLE
, [Name] NVARCHAR(100)
INSERT INTO @Property
DECLARE @Move AS TABLE
, [DateTo] DATE
, [MoveTypeID] INT
, [PropertyID] INT
INSERT INTO @Move
SELECT [Property].[ID] AS [property_id]
, [Property].[Name] AS [property_name]
WHEN [Move].[DateTo] IS NULL
AND [Move].[MoveTypeID] = 1 THEN
END AS [in_service]
FROM @Property AS [Property]
LEFT JOIN @Move AS [Move]
ON [Move].[PropertyID] = [Property].[ID]
WHERE [Move].[DateTo] IS NULL
AND [Move].[MoveTypeID] = 1;