QQQ. Days of the month, open to close.

Profit/loss (%) calculated for each day of the month for the period from 3/10/1999 till 11/28/2011: go long on open, exit on close.

day1999200020012002200320042005200620072008200920102011Total
1-0.484.3013.236.444.605.620.85-0.281.690.410.561.14-4.8133.29
26.45-11.41-17.79-11.526.950.793.65-1.831.35-11.456.474.72-2.51-26.15
3-2.383.5918.80-4.56-1.71-4.91-2.892.76-1.620.681.933.781.6515.13
40.20-3.332.731.200.840.92-0.144.274.37-5.314.24-4.97-1.263.74
55.869.914.22-1.47-2.671.37-1.10-0.492.903.582.574.182.6231.43
6-2.03-18.28-4.232.191.56-0.53-2.26-0.122.98-8.522.68-3.733.11-27.17
7-1.1815.330.20-9.00-0.21-0.021.95-4.86-2.53-7.63-8.11-3.01-0.33-19.42
80.68-13.47-9.5211.94-1.13-3.79-1.562.780.234.591.412.50-2.24-7.56
90.04-4.36-10.05-10.79-4.34-0.520.44-4.99-4.33-8.402.07-1.080.17-46.14
100.59-18.738.45-1.321.581.29-1.950.800.400.401.853.83-0.71-3.57
111.631.354.74-2.042.842.290.260.06-1.87-2.200.174.244.7916.26
12-2.36-21.8111.633.676.853.280.86-2.711.280.103.152.792.399.15
13-3.6311.26-4.731.690.90-4.950.09-0.082.8017.740.950.550.8923.45
14-6.42-15.05-1.2612.762.25-0.69-1.134.40-1.33-15.18-0.35-0.651.91-20.75
154.164.46-7.058.50-6.31-2.38-2.104.44-3.15-10.613.392.103.99-0.52
165.331.97-1.085.392.22-2.65-1.00-0.121.0815.55-0.05-0.69-3.0922.90
173.9415.54-2.72-4.82-0.241.930.71-0.97-2.82-5.022.670.57-4.504.25
183.43-6.774.83-3.615.985.560.36-1.131.44-2.113.97-0.64-0.9310.42
19-9.05-1.064.98-7.80-5.40-7.23-0.551.10-1.85-11.79-0.630.42-0.54-39.42
200.56-5.78-14.58-1.760.910.16-1.57-4.600.28-1.80-5.962.31-1.98-33.77
2112.160.065.731.07-0.85-2.22-0.50-3.575.27-4.625.60-3.42-1.3113.42
22-6.764.637.34-1.781.021.45-1.76-0.400.16-4.060.201.63-3.23-1.56
23-4.61-3.34-8.19-2.302.76-2.68-0.36-1.69-0.961.392.46-1.065.83-12.67
243.00-0.175.506.82-8.220.50-0.243.181.3611.863.62-0.063.1830.40
250.13-7.153.59-1.040.986.710.111.99-1.04-4.052.153.37-0.894.85
26-2.84-5.58-4.02-5.50-0.541.58-0.692.26-3.705.534.03-1.914.79-6.59
27-4.980.370.78-7.445.740.01-2.29-2.65-3.130.160.931.410.38-10.69
282.80-9.57-14.37-7.556.50-2.91-2.211.23-1.025.661.39-5.13-2.31-27.47
293.69-17.78-6.36-2.905.021.63-0.884.212.95-7.110.60-5.321.08-21.17
30-8.809.46-7.306.22-7.29-2.550.87-1.230.784.48-6.74-4.020.73-15.39
31-3.9912.92-6.36-4.25-0.96-0.511.34-0.71-1.256.32-1.58-0.220.050.80


Query used:
--1
select [day], [1999], [2000], [2001], [2002], [2003], [2004], [2005], [2006],[2007], [2008], [2009], [2010], [2011], [2012] Total into #t
from 
      (select cast((t.c- t.o)/t.o * 100 as decimal(10,2))  pl, DATEPART(d, t.d) [day], YEAR(t.d) y from qqq t) p
pivot
(
sum(pl)
for y in ([1999], [2000], [2001], [2002], [2003], [2004], [2005], [2006],[2007], [2008], [2009], [2010], [2011],[2012])
) r   
order by [day]

--2
update t
set t.Total = p.pl
from #t t
join  (
      select
      datepart(d, t.d) [day], 
      cast(sum((t.c- t.o)/t.o * 100) as decimal(10,2)) 'PL'  
      from qqq t
      group by   datepart(d, t.d)
      ) p on T.[day] = p.[day]
 
--3
DECLARE @HeaderList varchar(max)
SELECT @HeaderList = COALESCE(@HeaderList + '', '') +    name 
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id
select '' + @HeaderList + ''

--4
DECLARE @SelectList varchar(max)
SELECT @SelectList = COALESCE(@SelectList + '+''''+', '') +    'CAST([' + name + '] AS varchar(50))'
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id

declare @sql varchar(max)
select @sql = 'select ''''+' + @SelectList + '+'''' from #t'
 
exec (@sql)


or, to combine 3 and 4:
DECLARE @HeaderList varchar(max), @head varchar(1000)
SELECT @HeaderList = COALESCE(@HeaderList + '', '') +    name 
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id
select @head = '' + @HeaderList + ''

DECLARE @SelectList varchar(max)
SELECT @SelectList = COALESCE(@SelectList + '+''''+', '') +    'CAST([' + name + '] AS varchar(50))'
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id

declare @sql varchar(max)
select @sql = 'select ''' + @head + ''' union all select ''''+' + @SelectList + '+'''' from #t'
exec (@sql)

theCrunchR | © 2011