IF COL_LENGTH('dbo.asr_loc_mast', 'area_id') IS NULL BEGIN ALTER TABLE [dbo].[asr_loc_mast] ADD [area_id] INT NULL; END; IF COL_LENGTH('dbo.asr_loc_mast', 'loc_alias') IS NULL BEGIN ALTER TABLE [dbo].[asr_loc_mast] ADD [loc_alias] NVARCHAR(32) NULL; END; EXEC sys.sp_executesql N' UPDATE [dbo].[asr_loc_mast] SET [area_id] = CASE WHEN [crn_no] BETWEEN 1 AND 6 THEN 1 WHEN [crn_no] BETWEEN 7 AND 18 THEN 2 WHEN [crn_no] BETWEEN 19 AND 28 THEN 3 ELSE [area_id] END WHERE [area_id] IS NULL AND [crn_no] BETWEEN 1 AND 28; '; EXEC sys.sp_executesql N' ;WITH area_min AS ( SELECT [area_id], MIN([row1]) AS [min_row] FROM [dbo].[asr_loc_mast] WHERE [area_id] IN (1, 2, 3) AND [row1] IS NOT NULL GROUP BY [area_id] ) UPDATE lm SET [loc_alias] = CASE lm.[area_id] WHEN 1 THEN N''A-'' WHEN 2 THEN N''B-'' WHEN 3 THEN N''C-'' END + RIGHT(''00'' + CAST(lm.[row1] - area_min.[min_row] + 1 AS VARCHAR(10)), 2) + RIGHT(''000'' + CAST(lm.[bay1] AS VARCHAR(10)), 3) + RIGHT(''00'' + CAST(lm.[lev1] AS VARCHAR(10)), 2) FROM [dbo].[asr_loc_mast] lm INNER JOIN area_min ON lm.[area_id] = area_min.[area_id] WHERE lm.[area_id] IN (1, 2, 3) AND lm.[row1] IS NOT NULL AND lm.[bay1] IS NOT NULL AND lm.[lev1] IS NOT NULL; ';