In both of them you're mixing character & numeric data joined by +.
You need to CAST/CONVERT it all to character.
What data type are [BU], [SUBSIDUARY] & [OBJECT]?
CASE
WHEN [ORDER_TYPE] = 'SS' or [ORDER_TYPE] = 'SP'
THEN CAST([BU] AS VARCHAR(10)) + '.' + CAST([OBJECT] AS VARCHAR(10))
ELSE
CAST([BU] AS VARCHAR(10)) + '.'+ '14350' + '.' + CAST([SUBSIDIARY] AS VARCHAR(10))
END
Like this for instance:
declare @a as table ([BU] Varchar(10), [ORDER_TYPE] Char(2), [SUBSIDIARY] Varchar(10), [OBJECT] Varchar(10));
insert @a values ( 'BU1', 'SS', 'Slumpco', 'OBJECT1' );
insert @a values ( 'BU2', 'AA', 'Slumpco2', 'OBJECT2' );
select
CASE
WHEN [ORDER_TYPE] = 'SS' or [ORDER_TYPE] = 'SP'
THEN [BU] + '.' + [OBJECT]
ELSE
[BU] + '.'+ '14350' + '.' + [SUBSIDIARY]
END
from @a