Do you want get following return?
I don't understand your Goal, why the 201802 Revenue of B return in the Revenue 201801.
if object_id('tempdb..#t') is not null drop table #t
go
create table #t(Customer varchar(100),[Date] varchar(100),Revenue int,Profit int)
insert into #t(Customer,[Date],Revenue,Profit)
select 'a','201801',100,1 union all
select 'a','201801',10,11 union all
select 'b','201802',200,20
declare @sql nvarchar(max),@cols nvarchar(max)
select @cols=isnull(@cols+',','')+quotename('Revenue '+[Date])+','+quotename('Profit '+[Date]) from #t group by [date]
set @sql='
select * from (
select customer,colname,colvalue
from #t
cross apply(values(''Revenue ''+[Date],Revenue),(''Profit ''+[Date],Profit)) c(colName,ColValue)
) as t pivot (sum(colvalue) for colname in ('+@cols+')) p'
exec(@sql)
+----------+----------------+---------------+----------------+---------------+
| customer | Revenue 201801 | Profit 201801 | Revenue 201802 | Profit 201802 |
+----------+----------------+---------------+----------------+---------------+
| a | 110 | 12 | NULL | NULL |
| b | NULL | NULL | 200 | 20 |
+----------+----------------+---------------+----------------+---------------+