Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
jeff06
Posting Yak Master
166 Posts |
Posted - 2007-08-20 : 09:21:54
|
| table aid pct1 0.12 0.243 0.5table byear amount2001 102002 202003 302004 232005 672006 80I want to create a table retwiht this year newamount2006 80*0.1+67*0.24+23*0.252005 67*0.1+27*0.24+30*0.252004 23*0.1+30*0.24+20*0.252003 30*0.1+20*0.24+10*0.25=9.9How can i do that.Thanks.Jeff |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-08-20 : 09:37:33
|
[code]-- Prepare sample dataDECLARE @TableA TABLE (id INT, pct SMALLMONEY)INSERT @TableASELECT 1, 0.10 UNION ALLSELECT 2, 0.24 UNION ALLSELECT 3, 0.25DECLARE @TableB TABLE (yr SMALLINT, amount SMALLMONEY)INSERT @TableBSELECT 2001, 10 UNION ALLSELECT 2002, 20 UNION ALLSELECT 2003, 30 UNION ALLSELECT 2004, 23 UNION ALLSELECT 2005, 67 UNION ALLSELECT 2006, 80-- Show the expected outputSELECT b.yr, SUM(q.amount * a.pct) AS theValueFROM @TableB AS bCROSS JOIN @TableA AS aINNER JOIN @TableB AS q ON q.yr = b.yr - a.id + 1GROUP BY b.yrHAVING COUNT(*) = (SELECT COUNT(*) FROM @TableA)ORDER BY b.yr DESC[/code] E 12°55'05.25"N 56°04'39.16" |
 |
|
|
jeff06
Posting Yak Master
166 Posts |
Posted - 2007-08-20 : 09:37:40
|
| I have created two temp tables, thanks.CREATE TABLE #a( id int, pct real)goinsert into #a values (1, 0.1)insert into #a values (2, 0.24)insert into #a values (3, 0.5)select *from #adrop table #bCREATE TABLE #b( year int, amount real)goinsert into #b values (2001, 10)insert into #b values (2002, 20)insert into #b values (2003, 30)insert into #b values (2004, 23)insert into #b values (2005, 67)insert into #b values (2006, 80) |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-08-20 : 09:38:11
|
[code]-- Prepare sample dataDECLARE @TableA TABLE (id INT, pct SMALLMONEY)INSERT @TableASELECT 1, 0.10 UNION ALLSELECT 2, 0.24 UNION ALLSELECT 3, 0.5DECLARE @TableB TABLE (yr SMALLINT, amount SMALLMONEY)INSERT @TableBSELECT 2001, 10 UNION ALLSELECT 2002, 20 UNION ALLSELECT 2003, 30 UNION ALLSELECT 2004, 23 UNION ALLSELECT 2005, 67 UNION ALLSELECT 2006, 80-- Show the expected outputSELECT b.yr, SUM(q.amount * a.pct) AS theValueFROM @TableB AS bCROSS JOIN @TableA AS aINNER JOIN @TableB AS q ON q.yr = b.yr - a.id + 1GROUP BY b.yrHAVING COUNT(*) = 3ORDER BY b.yr DESC[/code] E 12°55'05.25"N 56°04'39.16" |
 |
|
|
jeff06
Posting Yak Master
166 Posts |
Posted - 2007-08-20 : 09:45:05
|
| Thank you so much Peso.I appreciate your help. |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-08-20 : 10:39:31
|
You're welcome. E 12°55'05.25"N 56°04'39.16" |
 |
|
|
|
|
|
|
|