以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]这个多表查询代码怎么写? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=39158) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:jyh7081 -- 发布时间:2013/8/16 21:36:00 -- [求助]这个多表查询代码怎么写?
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点甜 -- 发布时间:2013/8/16 22:30:00 -- 在命令窗口里运行下面的代码便可。 Dim otherdt As String = "日历|其他表" Dim sqlstr As String = "" For Each dt As DataTable In DataTables If dt.Caption IsNot Nothing AndAlso otherdt.Contains(dt.Caption) = False AndAlso otherdt.Contains(dt.Name) = False Then sqlstr += "select \'" & dt.Caption & "\' As 股票, 时间, CDbl(left(涨幅, len(涨幅)-1)) as 涨幅 from {" & dt.Name & "}" sqlstr += " union " End If Next sqlstr = sqlstr.SubString(0, sqlstr.Length - 7) sqlstr = "select * from (" & sqlstr & ") As t1 left join {日历} as t2 on (t1.时间=t2.公历年月日)" Dim q As new QueryBuilder q.TableName = "股票汇总" q.SelectString = sqlstr q.Build MainTable = Tables("股票汇总") \'--------------- Dim g As New CrossTableBuilder("统计表1", DataTables("股票汇总")) g.HGroups.AddDef("星期") g.VGroups.AddDef("股票") g.Totals.AddDef("涨幅", AggregateEnum.Average, "涨幅") g.Build() MainTable = Tables("统计表1") \'----------------- g = New CrossTableBuilder("统计表2", DataTables("股票汇总")) g.HGroups.AddDef("农历日") g.VGroups.AddDef("股票") g.Totals.AddDef("涨幅", AggregateEnum.Average, "涨幅") g.Build() MainTable = Tables("统计表2") |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:jyh7081 -- 发布时间:2013/8/16 22:47:00 -- 非常感谢,成功执行。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:jyh7081 -- 发布时间:2013/8/16 23:32:00 -- 有点甜老师,出现一个问题,5个表只分析了3个。另外,能否增加单选或多选的分析年份。
[此贴子已经被作者于2013-8-17 12:40:23编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:jyh7081 -- 发布时间:2013/8/17 10:43:00 -- 我想达到如下效果: 分析1、对各只股票星期*的平均涨幅进行分析时,增加多年选择;(数据取 平均值、众数、中数 可选) 分析2、对各只股票阴历*的平均涨幅进行分析时,增加多年选择;(数据取 平均值、众数、中数 可选) 分析1、2中的多年选择不要求一致,能否不生成临时表,因为下一步还要对其引用分析。例子文件在4楼 下面是我在execl中运用数据透视表进行分析的截图:
[此贴子已经被作者于2013-8-17 10:58:56编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lsy -- 发布时间:2013/8/17 14:12:00 -- 楼主,日历表从哪儿来的?没看见生成或转换日期、星期的代码。 到处找有关的转换函数,就像GetPy之类的,好方便。
请楼主分享一下。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lsy -- 发布时间:2013/8/17 16:10:00 -- 没有直接的函数,用代码转几个弯,搞定了。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:jyh7081 -- 发布时间:2013/8/17 17:29:00 -- lsy老师,我是用寿星万年历导出的,现在把程序包括源码发出共享,如果你能改编成狐表模块也算是功德无量。 [此贴子已经被作者于2013-8-17 17:50:43编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lsy -- 发布时间:2013/8/17 18:21:00 -- 不管怎么样,都谢你了。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点甜 -- 发布时间:2013/8/17 20:15:00 -- 2楼的代码有点问题,生成临时表 股票汇总 的时候,有些数据被吞噬了。下面的代码才正确。 Dim otherdt As String = "日历|表列管理|股票信息明细表|代码对照表|股票汇总|统计表1|统计表2" Dim sqlstr As String = "" For Each dt As DataTable In DataTables If dt.Caption IsNot Nothing AndAlso otherdt.Contains(dt.Caption) = False AndAlso otherdt.Contains(dt.Name) = False Then sqlstr += "select \'" & dt.Caption & "\' As 股票, 时间, CDbl(left(涨幅, len(涨幅)-1)) as 涨幅 from {" & dt.Name & "}" sqlstr += " union " End If Next sqlstr = sqlstr.SubString(0, sqlstr.Length - 7) Output.Show(sqlstr) sqlstr = "select * from (" & sqlstr & ") As t1 left join {日历} as t2 on (t1.时间=t2.公历年月日)" Dim cmd As New SQLCommand Dim sdt As DataTable cmd.CommandText = sqlstr sdt = cmd.ExecuteReader() \'--------------- Dim g As New CrossTableBuilder("统计表1", sdt) g.HGroups.AddDef("星期") g.VGroups.AddDef("股票") g.Totals.AddDef("涨幅", AggregateEnum.Average, "涨幅") g.Build() MainTable = Tables("统计表1") \'----------------- g = New CrossTableBuilder("统计表2", sdt) g.HGroups.AddDef("农历日") g.VGroups.AddDef("股票") g.Totals.AddDef("涨幅", AggregateEnum.Average, "涨幅") g.Build() MainTable = Tables("统计表2") |