Foxtable(狐表)用户栏目专家坐堂 → 求用SQL代码生成统计表


  共有10483人关注过本帖树形打印复制链接

主题:求用SQL代码生成统计表

帅哥哟,离线,有人找我吗?
lihe60
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6844 积分:43303 威望:0 精华:0 注册:2009/3/2 14:07:00
求用SQL代码生成统计表  发帖心情 Post By:2012/11/13 7:54:00 [只看该作者]

数据库为表A,求用SQL代码生成表B和表C.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目9.table


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6844 积分:43303 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2012/11/13 8:17:00 [只看该作者]

sgs,这是刚上传的,请看这个附件。

其他朋友也可以帮助哟。


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/13 9:05:00 [只看该作者]

 楼主,试了一下。你这个也太啥了,不可能用一句查询语句完成的,你需要对字符处理,而且如果不仅仅是三级的话,还要用到递归。

 或者狐表来做,或者写成一个存储过程/函数来调用。上网搜一下存储过程的编写。

 回到顶部
帅哥哟,离线,有人找我吗?
sgs
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/11/13 9:37:00 [只看该作者]

以下是引用lihe60在2012-11-13 7:54:00的发言:
数据库为表A,求用SQL代码生成表B和表C.

你也太纠结了吧,为什么不把数据分列显示呢


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/11/13 10:14:00 [只看该作者]

Select 科目名称,金额 from {表A} where instr([科目名称],chr(92)) = 0
union
Select 科目名称,sum(金额) As 金额 from (Select mid([科目名称],1,instr([科目名称],chr(92))-1) As 科目名称,金额 from {表A} where Instr([科目名称],chr(92)) > 0) group by 科目名称

 

恩,大概就是这个思路,这段代码是表B的,表C的语句你参照这个想想先


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6844 积分:43303 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2012/11/13 22:41:00 [只看该作者]

以下是引用sgs在2012-11-13 10:14:00的发言:

Select 科目名称,金额 from {表A} where instr([科目名称],chr(92)) = 0
union
Select 科目名称,sum(金额) As 金额 from (Select mid([科目名称],1,instr([科目名称],chr(92))-1) As 科目名称,金额 from {表A} where Instr([科目名称],chr(92)) > 0) group by 科目名称

 

恩,大概就是这个思路,这段代码是表B的,表C的语句你参照这个想想先

可以统计出表B,对这个代码已是眼花瞭乱了。对于表C,就不敢想了,照葫芦画不出瓢了。

[此贴子已经被作者于2012-11-14 6:24:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sgs
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/11/13 22:47:00 [只看该作者]

换个思路也许有更好的方法,比如从数据结构上修正下

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6844 积分:43303 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2012/11/13 23:14:00 [只看该作者]

以下是引用sgs在2012-11-13 22:47:00的发言:
换个思路也许有更好的方法,比如从数据结构上修正下

表格换了一下,再请教。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目9.table


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6844 积分:43303 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 27 1 2 3 下一页