as per my assumption and data provided we can get using Cross Apply but i'm not clear about Percentage column
declare @t table (dated varchar(10),E1 int,E2 int,E3 int,E4 int)
insert into @t
(dated,E1,E2,E3,E4)values
('05-27-15',1,1,2,3),
('05-28-15',2,3,NULL,5),
('05-29-15',3,4,null,2)
Select P.col,MAX([05-27-15])[05-27-15],
MAX([05-28-15])[05-28-15],
MAX([05-29-15])[05-29-15],
SUM([05-27-15])+SUM(COALESCE([05-28-15],0))+SUM(COALESCE([05-29-15],0))Total
from (
select col,[05-27-15],[05-28-15],[05-29-15] from (
select * from @t
CROSS APPLY(values('E1',E1),('E2',E2),('E3',E3),('E4',E4))cs (col,val))PP
PIVOT(MAX(val) for dated IN ([05-27-15],[05-28-15],[05-29-15]))P)P
GROUP BY P.col
Dynamic version :
if OBJECT_ID('tempdb..#temp') is not null
begin
drop table #temp
end
CREATE table #temp (dated varchar(10),E1 int,E2 int,E3 int,E4 int)
insert into #temp
(dated,E1,E2,E3,E4)values
('05-27-15',1,1,2,3),
('05-28-15',2,3,NULL,5),
('05-29-15',3,4,null,2)
DECLARE @statement NVARCHAR(max)
,@columns NVARCHAR(max),
@select_columns NVARCHAR(max)
SELECT @select_columns = Isnull(@select_columns + ', ', '')+ N'MAX([' + tbl.dated + ']) AS ['+tbl.dated+']'
FROM (SELECT DISTINCT dated
FROM #temp) AS tbl
SELECT @columns = Isnull(@columns + ', ', '') + N'[' + tbl.dated+ ']'
FROM (SELECT DISTINCT dated
FROM #temp) AS tbl
SELECT @statement = 'Select P.col,' + @select_columns
+ ' from (
select col,' + @columns
+ ' from (
select * from #temp
CROSS APPLY(values(''E1'',E1),(''E2'',E2),(''E3'',E3),(''E4'',E4))cs (col,val))PP
PIVOT(MAX(val) for dated IN (' + @columns
+ ')) as PVT)P
GROUP BY P.COL
'
PRINT @statement
EXEC sp_executesql @statement = @statement