急求一个查询过程的解决办法,小弟对SQL一窍不通,领导急要,谢谢大家啊!
是气象部门的一个降雨评分程序,领导突然发疯明天就要要这个东西,压给小弟,失败啊,解决后可再赠送500分作为酬谢,以姓氏作担保,决不食言,请大家帮我写一下啊……共有3个表,表A是实况值,表B是预报值,表C是每天评分的结果,几个表的结构如下:   
 表A:实况值 
 SID            date                  value 
 50136      20070212      31 
 50136      20070213      20 
 50136      20070214      15 
 …… 
 表A说明:SID字段是台站编号,date是日期,value是降水量。   
 表B 
 SID            date                  1      2      3      4 
 50136      20070211      0      0      1      2 
 50136      20070212      0      1      2      3 
 …… 
 表B说明:SID字段是台站编号,date是预报日期,字段1、2、3、4分别代表时间步长,1代表20070211这天的后一天,即报20070212日降水量级是0;2代表后两天,即20070213,以此类推;降水量级表示如果是0就是无降水,如果是小于等于10就是1,如果是小于等于20就是2,以此类推,表A中12、13、14日的降水量所对应的量级分别是4、2、2。   
 表C 
 SID            date                  Avalue      Bvalue      Span 
 50136      20070211      4                     0                     1 
 50136      20070211      2                     0                     2 
 …… 
 表C说明:SID字段是台站编号,date是预报日期,这两个跟前面一样的意思,Avalue和Bvalue分别是表A和表B中相对应时间步长(Span字段)下的降水量级。如第一行表示50136这个台站在20070211日报的明天的(Span=1)量级是0,但实况是4,报的后天(Span=2)的量级是0,实况是2,以此类推。   
 要求做出来一个每天可以自动运行的程序,最好是利用SQL自己的脚本或者C#编写的程序,每天运行后把结果更新到表C中。   
 要注意的是台站不仅只有50136,大概有100多个,每一个台站都要这么做,即每个台站每天都要做它后面四天的预报结果的评分。   
 谢谢大家了啊!
------解决方案--------------------没有验证,不知道对不对   
 insert into 表C(sid,date,avalue,bvalue,span) 
 select sid, 
 date, 
 (select case when value between 1 and 10 then 1 
 		when value between 10 and 20 then 2 
 		when value between 20 and 30 then 3 
 		when value between 30 and 40 then 4 else 0 end  
 from 表A a  
 where cast(a.date as datetime)=dateadd(day,1,cast(b.date as datetime)) and a.sid=b.sid), 
 [1], 
 1 
 from 表B b 
 union all 
 select sid, 
 date, 
 (select case when value between 1 and 10 then 1 
 		when value between 10 and 20 then 2 
 		when value between 20 and 30 then 3 
 		when value between 30 and 40 then 4 else 0 end  
 from 表A a  
 where cast(a.date as datetime)=dateadd(day,2,cast(b.date as datetime)) and a.sid=b.sid), 
 [2], 
 2 
 from 表B b 
 union all 
 select sid, 
 date, 
 (select case when value between 1 and 10 then 1 
 		when value between 10 and 20 then 2 
 		when value between 20 and 30 then 3 
 		when value between 30 and 40 then 4 else 0 end  
 from 表A a  
 where cast(a.date as datetime)=dateadd(day,3,cast(b.date as datetime)) and a.sid=b.sid), 
 [3], 
 3 
 from 表B b 
 union all 
 select sid, 
 date, 
 (select case when value between 1 and 10 then 1 
 		when value between 10 and 20 then 2 
 		when value between 20 and 30 then 3 
 		when value between 30 and 40 then 4 else 0 end  
 from 表A a  
 where cast(a.date as datetime)=dateadd(day,4,cast(b.date as datetime)) and a.sid=b.sid), 
 [4], 
 4 
 from 表B b
------解决方案----------------------创建测试环境 
 create table 实况值(SID int,date datetime,value int) 
 create table 预测值(SID int,date datetime,[1] int,[2] int,[3] int,[4] int) 
 --插入测试数据 
 insert 实况值(SID,date,value) 
 select  '50136 ', '20070212 ', '31 ' union