求一句Select 语句

[复制链接]
查看11 | 回复2 | 2011-8-19 07:21:25 | 显示全部楼层 |阅读模式
我有以下这个表,现在需要,任意给定2个日期,能算出这两日之间的每只基金的增长率,如果该日无数据则取前一天有数的.我要自己做,会很麻烦,至少分5步,1InsertInto表1Select基金代码,Max(净值日期)as日期From基金净值表Where净值日期=#2010-1-1#2Update表1,基金净值表Set表1.复权净值=基金净值表.复权净值Where(表1.净值日期=基金净值表.净值日期)34步把结束的算出来.5步把增长率算出来.求高手写1-2句Sql综合起来.我很感激,最好留下邮箱,我把附件发给您,我的附件是[email protected]基金代码净值日期复权净值400222011-6-221400222011-6-241400222011-6-301.001400222011-7-11.001400222011-7-81.002400222011-7-151.003400222011-7-181.003400222011-7-201.003400222011-7-211.003400222011-7-221.004400222011-7-251.004400222011-7-261.004400222011-7-271.004400222011-7-281.004400222011-7-291.004400232011-6-221400232011-6-241400232011-6-301.001400232011-7-11.001400232011-7-81.002400232011-7-151.002400232011-7-181.003400232011-7-201.003400232011-7-211.003400232011-7-221.003400232011-7-251.004400232011-7-261.004400232011-7-271.004400232011-7-281.004400232011-7-291.004500212011-6-101500212011-6-171.0002500212011-6-241.0008500212011-6-301.0014500212011-7-11.0016500212011-7-81.0015500212011-7-120.9985500212011-7-131.012500212011-7-141.0152500212011-7-151.0177500212011-7-181.0146500212011-7-191.005500212011-7-201.0047500212011-7-210.9947500212011-7-220.9983500212011-7-250.9655500212011-7-260.9695500212011-7-270.9792500212011-7-280.9753500212011-7-290.9692900152011-6-141900152011-6-171900152011-6-241.014900152011-6-301.017900152011-7-11.017900152011-7-81.028900152011-7-151.039900152011-7-221.033900152011-7-291.0141000552011-7-1311000552011-7-1411000552011-7-2111000552011-7-2811100272011-6-211
回复

使用道具 举报

千问 | 2011-8-19 07:21:25 | 显示全部楼层
这个问题有一个难点,就是要筛选某一个日期的前一天的数据。代码我已经调试出来了,假设这张基金净值表叫做fund,只用一句话就可以实现楼主想要的功能:假设是要查询7月1号到8月1号每只基金的增长率:selectr.基金代码,(r.复权净值-t.复权净值)/t.复权净值as基金增长率from(select*from(selecta.基金代码astemp_fund,max(a.净值日期)astemp_dayfromfundawherea.净值日期=\'2011-8-1\'groupbya.基金代码)innerjoinfundbontemp_fund=b.基金代码andtemp_day=b.净值日期)r,(select*from(selectc.基金代码astemp_fund,max(c.净值日期)astemp_dayfromfundcwherec.净值日期=\'2011-7-1\'groupbyc.基金代码)innerjoinfunddontemp_fund=d.基金代码andtemp_day=d.净值日期)twherer.基金代码=t.基金代码楼主快去试试吧~我可是调了2个小时哦~能用记得给分哈~追问朋友,非常感谢您帮我弄这事情,但是,不行,提示一句话\"不支持Join表达式\"你看看哪个地方没弄好?我贴图给你了,如果方便,把邮箱留下,我发你附件,或者联系我邮箱[email protected]再次感谢.
回复

使用道具 举报

千问 | 2011-8-19 07:21:25 | 显示全部楼层
原来你用的是ACCESS数据库,ACCESS的功能要少一些,连续嵌套和JOIN可能不支持。我用的是PL/SQLORACLE没有问题。试试select*from(selecta.基金代码astemp_fund,max(a.净值日期)astemp_dayfromfundawherea.净值日期=\'2011-9-1\'groupbya.基金代码)innerjoinfundbontemp_fund=b.基金代码andtemp_day=b.净值日期这句支持吗,如果还不行,再试试select*from(selecta.基金代码astemp_fund,max(a.净值日期)astemp_dayfromfundawherea.净值日期=\'2011-9-1\'groupbya.基金代码)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则