text: 
  ALTER PROCEDURE [dw].[p_lataa_d_organisaation_alayksikot]
  AS
  IF (
  		SELECT count(1)
  		FROM dw.d_organisaation_alayksikot
  		WHERE [korkeakoulu_koodi] = '-1'
  		) = 0
  BEGIN
  	TRUNCATE TABLE dw.d_organisaation_alayksikot
  
  	INSERT dw.d_organisaation_alayksikot (
  		[vuosi]
  		,[korkeakoulu_koodi]
  		,[paayksikko_koodi]
  		,[alayksikko_koodi]
  		,[alayksikko_nimi]
  		,source
  		)
  	VALUES (
  		N'-1'
  		,N'-1'
  		,N'-1'
  		,N'-1'
  		,N'Tuntematon'
  		,N'etl: p_lataa_d_organisaation_alayksikot'
  		)
  END
  
  MERGE dw.d_organisaation_alayksikot AS target
  USING (
  	SELECT [vuosi]
  	  ,[Korkeakoulun_koodi]
        ,COALESCE([Paayksikon_koodi], '-1') as Paayksikon_koodi
        ,[Alayksikon_koodi]
        ,[Alayksikon_nimi]
  		,'etl: p_lataa_d_organisaation_alayksikot (' + [IMP_CREATED_BY] +')'AS source
  	FROM sa.sa_suorat_amk8a_alayksikkokoodisto where vuosi < '2017'
  	) AS src
  	ON target.vuosi = src.vuosi
  		AND target.korkeakoulu_koodi = src.korkeakoulun_koodi
  		AND target.alayksikko_koodi = src.alayksikon_koodi
  		AND target.alayksikko_nimi = src.alayksikon_nimi
  WHEN MATCHED
  	THEN
  		UPDATE
  		SET target.alayksikko_nimi = src.[alayksikon_nimi]
  				,target.paayksikko_koodi = src.[paayksikon_koodi]
  				,target.source = src.source
  WHEN NOT MATCHED
  	THEN
  		INSERT (
  			[vuosi]
  			,[korkeakoulu_koodi]
  			,[paayksikko_koodi]
  			,[alayksikko_koodi]
  			,[alayksikko_nimi]
  			,source
  			)
  		VALUES (
  			src.[vuosi]
  			,src.[korkeakoulun_koodi]
  			,src.[Paayksikon_koodi]
  			,src.[alayksikon_koodi]
  			,src.[alayksikon_nimi]
  			,src.source
  			);
  			MERGE dw.d_organisaation_alayksikot AS target
  			USING (
  				SELECT [vuosi]
  				  ,[Korkeakoulun_koodi]
  			      ,COALESCE([Paayksikon_koodi], '-1') as Paayksikon_koodi
  			      ,[Alayksikon_koodi]
  			      ,[Alayksikon_nimi]
  					,'etl: p_lataa_d_organisaation_alayksikot (' + [IMP_CREATED_BY] +')'AS source
  				FROM sa.sa_suorat_amk8a_alayksikkokoodisto where vuosi > '2016'
  				) AS src
  				ON target.vuosi = src.vuosi
  					AND target.korkeakoulu_koodi = src.korkeakoulun_koodi
  					AND target.alayksikko_koodi = src.alayksikon_koodi
  
  			WHEN MATCHED
  				THEN
  					UPDATE
  					SET target.alayksikko_koodi = src.[alayksikon_koodi]
  							,target.paayksikko_koodi = src.[paayksikon_koodi]
  							,target.source = src.source
  			WHEN NOT MATCHED
  				THEN
  					INSERT (
  						[vuosi]
  						,[korkeakoulu_koodi]
  						,[paayksikko_koodi]
  						,[alayksikko_koodi]
  						,[alayksikko_nimi]
  						,source
  						)
  					VALUES (
  						src.[vuosi]
  						,src.[korkeakoulun_koodi]
  						,src.[Paayksikon_koodi]
  						,src.[alayksikon_koodi]
  						,src.[alayksikon_nimi]
  						,src.source
  						);
  MERGE dw.d_organisaation_alayksikot AS target
  USING (
  	SELECT [vuosi]
  	  ,[Korkeakoulun_koodi]
        ,COALESCE([Paayksikon_koodi], '-1') as Paayksikon_koodi
        ,[Alayksikon_koodi]
        ,[Alayksikon_nimi]
  		,'etl: p_lataa_d_organisaation_alayksikot (' + [IMP_CREATED_BY] +')'AS source
  	FROM sa.sa_suorat_yo9a_alayksikkokoodisto
  	) AS src
  	ON target.vuosi = src.vuosi
  		AND target.korkeakoulu_koodi = src.korkeakoulun_koodi
  		AND target.alayksikko_koodi = src.alayksikon_koodi
  		AND target.alayksikko_nimi = src.alayksikon_nimi
  WHEN MATCHED
  	THEN
  		UPDATE
  		SET target.alayksikko_nimi = src.alayksikon_nimi
  				,target.paayksikko_koodi = src.paayksikon_koodi
  				,target.source = src.source
  WHEN NOT MATCHED
  	THEN
  		INSERT (
  			[vuosi]
  			,[korkeakoulu_koodi]
  			,[paayksikko_koodi]
  			,[alayksikko_koodi]
  			,[alayksikko_nimi]
  			,source
  			)
  		VALUES (
  			src.[vuosi]
  			,src.[korkeakoulun_koodi]
  			,src.[Paayksikon_koodi]
  			,src.[alayksikon_koodi]
  			,src.[alayksikon_nimi]
  			,src.source
  			);
  