• CREATE TABLE [dbo].[nTable](

    [p_key] [int] NOT NULL,

    [mf_1] [char](5) NULL,

    [mf_2] [char](5) NULL,

    [mf_3] [char](5) NULL,

    [mf_4] [char](5) NULL,

    [mf_5] [char](5) NULL,

    [cf_1] [int] NULL,

    [cf_2] [int] NULL,

    [cf_3] [int] NULL,

    [cf_4] [int] NULL,

    [cf_5] [int] NULL,

    CONSTRAINT [PK_nTable] PRIMARY KEY CLUSTERED

    (

    [p_key] ASC

    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    ) ON [PRIMARY]

    Sample Data...

    p_keymf_1mf_2mf_3mf_4mf_5cf_1cf_2cf_3cf_4cf_5

    1AAA BBB CCC DDD EEE 55555

    2BBB DDD BBB BBB BBB 55555

    3EEE DDD CCC BBB AAA 55555

    4FFF HHH III AAA NULL4444NULL

    5ZZZ NULLNULLNULLNULL1NULLNULLNULLNULL

    6GGG BBB EEE AAA NULL4444NULL

    7MMM EEE AAA NULLNULL333NULLNULL

    8NULLNULLNULLNULLNULL00000

    9RRR TTT DDD BBB CCC 55555

    10BBB CCC AAA NULLNULL333NULLNULL

    11CCC AAA NULLBBB NULL33NULL3NULL

    12WWW UUU AAA CCC EEE 55555

    13SSS AAA DDD EEE NULL4444NULL

    14EEE FFF BBB AAA NULL4444NULL

    15TTT NULLNULLNULLNULL1NULLNULLNULLNULL

    16YYY AAA NULLNULLNULL22NULLNULLNULL

    17GGG XXX BBB NULLNULL333NULLNULL

    18BBB AAA CCC EEE DDD 55555

    19PPP BBB TTT JJJ NULL4444NULL

    20KKK LLL NULLNULLNULL22NULLNULLNULL

    drop table pvtTable

    select p_key, mf_value, mf_field, REPLACE(mf_field,'mf_','cf_') as cf_field into pvtTable from nTable

    unpivot

    (mf_value for mf_field in

    (mf_1, mf_2, mf_3, mf_4, mf_5)) as pvtTable where mf_value in ('AAA','BBB')

    declare getCSField cursor for select p_key, cf_field from pvtTable

    open getCSField

    declare @cmd varchar(max),

    @P_Keyint,

    @CSField as varchar(100);

    fetch next from getCSField into @P_Key, @CSField

    while @@FETCH_STATUS = 0

    begin

    begin try

    execute ('select ' + @P_Key + ' as p_key, ' + @CSField + ' from nTable where p_key = ' + @P_Key)

    end try

    begin catch

    select @P_Key, @CSField

    end catch

    fetch next from getCSField into @P_Key, @CSField;

    end

    CLOSE getCSField

    DEALLOCATE getCSField