A和B两个表,
A表结构为 城市 频道 开始日期 结束日期 开始时间 结束时间 比例
B表结构为 城市 频道 开始日期 结束日期 开始时间 结束时间 占比
A B两表同名字段一一对应,现在想依据B表 占比 字段来更新A表 比例字段
更新A.比例=CAST(sum(占比) * 0.1 / count(占比) * 10 AS decimal(10, 4))
条件是B.城市=A.城市,B.频道=A.频道,B.开始日期>=2009-01-01,B.结束日期<2009-07-01 B.开始时间>=A.开始时间-1 and B.结束时间>=A.结束时间+1A和B表都有多条数据
不知道说清楚没有

解决方案 »

  1.   

    UPDATE dbo.全国结果 
    SET 比例=   (SELECT  CAST(sum(占比) * 0.1 / count(占比) * 10 AS decimal(10, 4)) FROM dbo.剧目表 WHERE  (开始日期>=CONVERT(DATETIME,'2008-7-1', 102)) AND (开始日期<=CONVERT(DATETIME,'2009-06-30', 102))AND 地区=A.地区 AND 频道=A.频道 AND 开始时间 >=a.开始时间-1   AND 开始时间 <=a.开始时间+1 ) FROM dbo.剧目表 AS A 
    WHERE  (开始日期>=CONVERT(DATETIME,'2009-1-1', 102))怎样修改这句呢
      

  2.   


     update tb1
     set tb1.字段=......
     from tb1, tb2, tb3 ......
     where tb1.id=tb2.id and ......
    楼主写成上面这种格式吧。
      

  3.   

    UPDATE dbo.全国结果 
    SET 比例=  (SELECT  CAST(sum(占比) * 0.1 / count(占比) * 10 AS decimal(10, 4)) 
    FROM dbo.剧目表 
    WHERE  (开始日期>=CONVERT(DATETIME,'2008-7-1', 102)) AND (开始日期 <=CONVERT(DATETIME,'2009-06-30', 102))AND 地区=A.地区 AND 频道=A.频道 AND 开始时间 >=a.开始时间-1  AND 开始时间 <=a.开始时间+1 ) FROM dbo.剧目表 AS A WHERE  (开始日期>=CONVERT(DATETIME,'2009-1-1', 102)) 更新 全国结果.比例
    条件是剧目表和全国结果对应的同一地区,同一频道,开始时间-1和结束时间+1之间的,所有 剧目表.占比 的和除以个数
    这样可以说明白吗
      

  4.   

    可否帮忙修改以下sql
    UPDATE 全国数据 
    SET 全国数据.比例 = (SELECT Sum(剧目表.占比)/Count(剧目表.占比)
    FROM 剧目表 INNER JOIN 全国数据 ON (剧目表.地区 = 全国数据.地区) AND (剧目表.频道 = 全国数据.频道)
    WHERE (((剧目表.地区)=[全国数据].[地区]) AND ((剧目表.频道)=[全国数据].[频道]) AND ((剧目表.开始时间)>=[全国数据].[开始时间]-1) AND ((剧目表.结束时间)<=[全国数据].[结束时间]+1) AND ((剧目表.开始日期)>=#1/1/2008#) AND ((剧目表.结束日期)<=#7/1/2008#)));