以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求用SQL代码生成统计表 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25605) |
||||
-- 作者:lihe60 -- 发布时间:2012/11/13 7:54:00 -- 求用SQL代码生成统计表 数据库为表A,求用SQL代码生成表B和表C.
|
||||
-- 作者:lihe60 -- 发布时间:2012/11/13 8:17:00 -- sgs,这是刚上传的,请看这个附件。 其他朋友也可以帮助哟。 |
||||
-- 作者:lin_hailun -- 发布时间:2012/11/13 9:05:00 -- 楼主,试了一下。你这个也太啥了,不可能用一句查询语句完成的,你需要对字符处理,而且如果不仅仅是三级的话,还要用到递归。 或者狐表来做,或者写成一个存储过程/函数来调用。上网搜一下存储过程的编写。 |
||||
-- 作者:sgs -- 发布时间:2012/11/13 9:37:00 -- 以下是引用lihe60在2012-11-13 7:54:00的发言:
数据库为表A,求用SQL代码生成表B和表C. 你也太纠结了吧,为什么不把数据分列显示呢 |
||||
-- 作者:lin_hailun -- 发布时间:2012/11/13 9:55:00 -- 楼主,我试了一下,你在狐表的sql窗口执行一下,可以截取出值,但是,这个代价太大。 select iif(Instr(科目名称, \'\\\') = 0, left(科目名称, len(科目名称)), iif(InStr(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, \'\\\'))), \'\\\') = 0, left(科目名称, len(科目名称)), iif(InStr(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, \'\\\') - len(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, \'\\\')))))), \'\\\') = 0, left(科目名称, cint(Instr(科目名称, \'\\\') + (Len(科目名称) - Instr(科目名称, \'\\\') - len(Right(科目名称, Instr(科目名称, \'\\\')))))), 0))) from {表A} Where 科目名称 is not null |
||||
-- 作者:sgs -- 发布时间:2012/11/13 10:14:00 -- Select 科目名称,金额 from {表A} where instr([科目名称],chr(92)) = 0
恩,大概就是这个思路,这段代码是表B的,表C的语句你参照这个想想先 |
||||
-- 作者:lihe60 -- 发布时间:2012/11/13 22:41:00 -- 以下是引用sgs在2012-11-13 10:14:00的发言:
Select 科目名称,金额 from {表A} where instr([科目名称],chr(92)) = 0
恩,大概就是这个思路,这段代码是表B的,表C的语句你参照这个想想先 可以统计出表B,对这个代码已是眼花瞭乱了。对于表C,就不敢想了,照葫芦画不出瓢了。 [此贴子已经被作者于2012-11-14 6:24:03编辑过]
|
||||
-- 作者:sgs -- 发布时间:2012/11/13 22:47:00 -- 换个思路也许有更好的方法,比如从数据结构上修正下 |
||||
-- 作者:lihe60 -- 发布时间:2012/11/13 23:14:00 -- 以下是引用sgs在2012-11-13 22:47:00的发言:
换个思路也许有更好的方法,比如从数据结构上修正下 表格换了一下,再请教。
|
||||
-- 作者:lihe60 -- 发布时间:2012/11/14 6:15:00 -- 以下是引用lin_hailun在2012-11-13 9:55:00的发言: 这组代码是截除最后一个级别,我要的是级别小于或等于二级的。
楼主,我试了一下,你在狐表的sql窗口执行一下,可以截取出值,但是,这个代价太大。 select iif(Instr(科目名称, \'\\\') = 0, left(科目名称, len(科目名称)), iif(InStr(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, \'\\\'))), \'\\\') = 0, left(科目名称, len(科目名称)), iif(InStr(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, \'\\\') - len(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, \'\\\')))))), \'\\\') = 0, left(科目名称, cint(Instr(科目名称, \'\\\') + (Len(科目名称) - Instr(科目名称, \'\\\') - len(Right(科目名称, Instr(科目名称, \'\\\')))))), 0))) from {表A} Where 科目名称 is not null [此贴子已经被作者于2012-11-14 6:16:55编辑过]
|