Apply pivot on SQL Server table
If you don't know in advance the name of the columns you want to put in your 'Other' column, you have to use something else in addition to the PIVOT statement.

You can try something like :

select  t.PromotionInd  as [Promo Id],
        'BRK'           as [Charge ID],
        t.[BRK]         as [Amount],
        'CLR'           as [Charge ID],
        t.[CLR]         as [Amount],
        'SDC'           as [Charge ID],
        t.[SDC]         as [Amount],
        'BIN'           as [Charge ID],
        t.[BIN]         as [Amount],
        'Other'         as [Charge ID],
        o.Amount        as [Amount]
from (
    select PromotionInd, sum(chrgAmt) as Amount
    from DtlChrg
    where ChrgCode not in ('CLR', 'SDC', 'BRK', 'BIN')
    group by PromotionInd
    ) o
join (
   select p.PromotionInd, p.BIN, p.BRK, p.CLR, p.SDC
   from (
       select PromotionInd, ChrgCode, chrgAmt
       from DtlChrg
        ) s
   pivot
       (
       sum(chrgAmt)
       for ChrgCode in ([CLR], [SDC], [BRK], [BIN])
       ) p
   ) t on o.PromotionInd = t.PromotionInd


(but not very nice to have several columns with the same name or with spaces inside...)

(and you can't have a "double header" as in your example, this is something you should build in your reporting tool, not directly in SQL I think)