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表都有多条数据
不知道说清楚没有
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表都有多条数据
不知道说清楚没有
解决方案 »
- 字段为字符串的话条件怎么选?
- 一个SQL脚本能不能引用另一个SQL脚本?
- 这样的语句在SQLSERVER,应该怎么写?
- 妙用 T-SQL: PARSENAME 函数实现按指定分隔符拆分字符串 SplitString
- 请问这样写出了什么问题啊,,有关于数据库查询方面的,,这道题应该怎么样做才可以啊,,请各位指教
- 请教,为什么我的sql server2000的image类型字段只能存储32k大小的图片呢?有办法解决吗?
- 紧急求助:表错误。链的链接不匹配。问题中附详细操作情况
- 新手:sqlserver中正负数转换的问题
- 本地SQL数据库表中数据自动向另一台机器access数据库表更新的语句
- dbcc checkdb repair_allow_data_loss
- sql小问题(字符串连接)
- TXT文件导入MYSQL的问题,在线求教!
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))怎样修改这句呢
update tb1
set tb1.字段=......
from tb1, tb2, tb3 ......
where tb1.id=tb2.id and ......
楼主写成上面这种格式吧。
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之间的,所有 剧目表.占比 的和除以个数
这样可以说明白吗
UPDATE 全国数据
SET 全国数据.比例 = (SELECT Sum(剧目表.占比)/Count(剧目表.占比)
FROM 剧目表 INNER JOIN 全国数据 ON (剧目表.地区 = 全国数据.地区) AND (剧目表.频道 = 全国数据.频道)
WHERE (((剧目表.地区)=[全国数据].[地区]) AND ((剧目表.频道)=[全国数据].[频道]) AND ((剧目表.开始时间)>=[全国数据].[开始时间]-1) AND ((剧目表.结束时间)<=[全国数据].[结束时间]+1) AND ((剧目表.开始日期)>=#1/1/2008#) AND ((剧目表.结束日期)<=#7/1/2008#)));