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


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

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

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


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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/14 12:10:00 [显示全部帖子]

 固定的 4位 2位 2位 2位 2位 吗?

 统计的只是前两级吗?

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/14 14:00:00 [显示全部帖子]

 用编号简单,但是如果要确定银行,同样麻烦。

select 科目编号, sum(金额) as 金额 from (select 金额, mid(科目编号, 1, iif(len(科目编号)>=6, 6, 4)) As 科目编号 from {表A}) group by 科目编号

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/14 15:34:00 [显示全部帖子]

 截取银行的统计,但代价不是一般的大,楼主,三思哦。

select 科目名称, sum(金额) as 金额 from
(select
iif(Instr(科目名称, '\') = 0, left(科目名称, len(科目名称)), iif(InStr(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, '\'))), '\') = 0,
left(科目名称, len(科目名称)), left(科目名称, cint(Instr(科目名称, '\') + InStr(Right(科目名称, cint(Len(科目名称) - Instr(科目名称, '\'))), '\') - 1)))) As 科目名称, 金额
from {表A})
group by 科目名称

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/15 22:22:00 [显示全部帖子]

 charIndex,你的参数颠倒了。

select 科目名称, sum(金额) as 金额 from
(select
Case when CharIndex('\', 科目名称) = 0 then left(科目名称, len(科目名称)) else case when CharIndex('\',Right(科目名称, Ceiling(Len(科目名称) - CharIndex('\', 科目名称)))) = 0 then left(科目名称, len(科目名称)) else left(科目名称, Ceiling(CharIndex('\', 科目名称) + CharIndex('\', Right(科目名称, Ceiling(Len(科目名称) - CharIndex('\', 科目名称)))) - 1)) end end As 科目名称, 金额
from {表A}) as t
group by 科目名称

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/16 0:25:00 [显示全部帖子]

 不会了……楼主努力啊。

 回到顶部