免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2130 | 回复: 5
打印 上一主题 下一主题

SQL分组语句-求一解决良方 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-19 15:12 |只看该作者 |倒序浏览
咨询一段SQL分组语句-求一解决良方表之间的关系
A表

单据号        费用ID         目的
docno         prid          purno
B表
ID               单据号            姓名          生日       护照号码
userid         docno            name         birtno      pasno
C表
费用ID        费用
prid             prno
A->B 是一对多关系
A->C 是一对一关系


需要得到的样式如下:

   ———————————————————————————
  |  序号  | 单据号  | 姓名    | 生日   | 护照号码|   目的   |    费用 |
   ———————————————————————————
  |   1  |  080101 |  ROSE   | 2008-08| G200801|C-2培训  |  240 |
   ———————————————————————————
  |   2  |  080101 |  JACK   | 2008-08| G200802|C-2培训  |  240 |
   ———————————————————————————
  |   3 |  080102 |  TOM    | 2008-08| G200803|C-2培训  |  240 |
   ———————————————————————————
  |                          合计:|  3 名      |  2 批      |  720 元   |          |
   ———————————————————————————
  |   4  |  080103 |  JACK   | 2008-08| G200802|C-2培训  |  400 |
   ———————————————————————————
  |   5  |  080104 |  TOM    | 2008-08| G200803|C-2培训  |  400 |
   ———————————————————————————
  |                           合计:|     2 名  |        2 批  | 800 元  |        |
  ————————————————————————————
  |                           总计:|  5 名     |        4 批  | 1520 元 |      |
  ———————————————————————————
如果是单表我知道可以使用ROLLUP进行统计,可是在多表里面不清楚怎么使用ROLLUP
如有朋友知道怎么进行查询请提供一解决良方,小弟在次谢过了。

论坛徽章:
0
2 [报告]
发表于 2008-07-19 18:38 |只看该作者
呵呵,可以实现的,你查查sql的分组统计。我以前实现过,不记得了

论坛徽章:
0
3 [报告]
发表于 2008-07-19 21:14 |只看该作者
roll up子句可以满足你的要求

论坛徽章:
0
4 [报告]
发表于 2008-07-19 21:15 |只看该作者
在使用UNION ALL 我进行统计出来的时候所有的合计都跑到最下面去了.真不知道该怎么弄.
楼上朋友有样例么.指点啊.
谢谢了

论坛徽章:
0
5 [报告]
发表于 2008-07-19 22:06 |只看该作者
这个可以么?
select
b.docno, b.name, b.birthno, b.pasno, a.purno,
sum (c.prno), count (distinct b.name), count (distinct b.docno)
from a, b, c
where a.prid = c.prid
and a.docno = b.docno
rollup by (b.docno, b.name, b.birthno, b.pasno, a.purno)


加上一定的过滤条件吧。应该可以的

[ 本帖最后由 ivhb 于 2008-7-19 22:08 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-07-20 02:11 |只看该作者
谢谢楼上的.不过那样不行.不能分组统计出来.
我使用
select 单据号,姓名,生日,护照,目的,c.费用 from
  ( select 1 as kk ,单据号,姓名,生日,护照,目的,c.费用,c.费用id
     from b, a,c
     where b.单据号=a.单据号 and a.费用id = c.费用id
    union all
   select 2 as kk ,'','','合计', count(1) as '名',count(distinct 单据号) as '批',sum(c.费用),c.费用id
     from b, a,c
     where b.单据号=a.单据号 and a.费用id = c.费用id
     group by a.费用id
    union all
   select 3 as kk ,'','','总合计', count(1) as '名',count(distinct 单据号) as '批',sum(c.费用), ''
     from b, a,c
     where b.单据号=a.单据号 and a.费用id = c.费用id
  )

这样进行统计,也不能达到效果.那样统计后,合计全都到最后显示了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP