For your duplicate result, one common reason for this is when there are multiple matches between the tables being joined, resulting in duplicate rows in your output.
To address this issue, you can try using the DISTINCT keyword in your SELECT statement. Try the below and see... I just rewrite your statement for you. let's see if that works. This way, you're only returning unique rows.
SELECT DISTINCT
[TB].[Unitid],
[SO].[DServiceOrderID],
[SO].[ServiceOrderNumberCleaned],
[SO].[BasicStart],
[SO].[FunctionalLocation],
[SO].[MaintActivityType],
[SO].[MaintActivityTypeText],
[SO].[Ordertype],
[SO].[ServiceOrderLongTextCleaned],
[SO].[ServiceOrderOperationTextCleaned],
[SO].[ActualStart],
[CDA].[Employee]
FROM
[dim].[ServiceOrder] AS SO
INNER JOIN
[dim].[Turbine] AS TB ON TRY_CAST(SO.[Room] AS INT) = TB.[Unitid]
INNER JOIN
[pa].[SAPTimeRegistration] AS CDA ON CDA.[ServiceOrderNumberTrim] = SO.ServiceOrderNumberCleaned
WHERE
[TB].[SBU] = 'LAT'
AND [SO].[ActualStart] BETWEEN '2023-01-01' AND GETDATE();