————————————————————————————————
  |  序号  | 单据号  | 姓名    | 生日   |护照号码|  目的   | 费用 |
   ————————————————————————————————
  |   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 元         |
   ————————————————————————————————
  |   2    |  080103 |  JACK   | 2008-08| G200802|C-2培训  |  400 |
   ————————————————————————————————
  |   3    |  080104 |  TOM    | 2008-08| G200803|C-2培训  |  400 |
   ————————————————————————————————
  |                             合计:2 名  2 批   800 元         |
  ————————————————————————————————
  |                               总计:5 名 4 批  1520 元        |
   ————————————————————————————————A表:
单据号 费用ID  目的B表:
单据号 姓名 生日 护照号码   C表:
费用ID 费用A->B 是一对多关系
A->C 是一对一关系--测试样例待需修改SELECT CHINESE, PRICE, SPRICE, BELONG, e, DBELONG
  FROM ( ---这里是按人员与价格而分
        SELECT A.CHINESE_NAME AS CHINESE,
               B.PRICE AS PRICE,
               SUM(B.PRICE) AS SPRICE,
               COUNT(A.BELONG_NO) AS BELONG,
               0 as e,
               COUNT(DISTINCT A.BELONG_NO) AS DBELONG,
               '0' AS A,
               B.PRICE AS B,
               '0' AS C
          FROM PERSON_INFO A, PURPOSE B, apply_info c
         WHERE a.apply_no = c.apply_no
           and b.id = c.purpose
           and c.submit_date = to_date('2008-06-06', 'yyyy-mm-dd')
         GROUP BY A.CHINESE_NAME, B.PRICE
        UNION ALL  --价格单分组
        SELECT price || '总计',
               0 AS PRICE,
               SUM(B.PRICE) AS SPRICE,
               0 as e,
               COUNT(A.BELONG_NO) AS BELONG,
               COUNT(DISTINCT A.BELONG_NO) AS DBELONG,
               '0' AS A,
               B.PRICE AS B,
               '1' AS C
          FROM PERSON_INFO A, PURPOSE B, apply_info c
         WHERE a.apply_no = c.apply_no
           and b.id = c.purpose
           and c.submit_date = to_date('2008-06-06', 'yyyy-mm-dd')
         GROUP BY B.PRICE
        UNION ALL --总计分组
        SELECT '全总计',
               0 AS PRICE,
               SUM(B.PRICE) AS SPRCIE,
               0 as e,
               COUNT(A.BELONG_NO) AS BELONG,
               COUNT(DISTINCT A.BELONG_NO) AS DBELONG,
               '1' AS A,
               0 AS B,
               '1' AS C
          FROM PERSON_INFO A, PURPOSE B, apply_info c
         WHERE a.apply_no = c.apply_no
           and c.submit_date = to_date('2008-06-06', 'yyyy-mm-dd')
           and b.id = c.purpose) A
 ORDER BY A, B, C查询出来的数据是:
CHINESE, PRICE, SPRICE
jack  240 240
rose  240 480
240总计:      480
jack  400 400
rose  400 800
400总计:      800
全总计:    1280
如果现在放HTML代码里面,就会多出现一条数据"240总计"与"400总计"这样的:
怎么才能改变不这样显示呢?
现在还只有人员与价格,如果取出编码与生日这里使用的是UNION ALL
知道rollup也能统计。有人能指点么:真的很急不然也不半夜发贴,这个弄了一天了。
查询的数据放的HTML里就成这样了:
   ————————————————————————————————
  |  序号  | 单据号  | 姓名    | 生日   |护照号码|  目的   | 费用 |
   ————————————————————————————————
  |   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 |
   ————————————————————————————————
  |   4    |  240总计|         |        |        |         |      |   这是应该没有的。
   ————————————————————————————————
  |                             合计:3 名  2 批   720 元         |  应该这样显示
   ————————————————————————————————
  |   5    |  080103 |  JACK   | 2008-08| G200802|C-2培训  |  400 |
   ————————————————————————————————
  |   6    |  080104 |  TOM    | 2008-08| G200803|C-2培训  |  400 |
   ————————————————————————————————
  |   7    |  400总计|         |        |        |         |      |  同样没有
   ————————————————————————————————
  |                             合计:2 名  2 批   800 元         |  YES
  ————————————————————————————————
  |                               总计:5 名 4 批  1520 元        |
   ————————————————————————————————

解决方案 »

  1.   

    你的html的是不是另外有合计的?sql语句没看到有什么错误,确实用rollup也可以实现的,应该比你的语句效率高
    不过你目前的问题是怎么会多出来
        合计:3 名  2 批  720 元        ¦  应该这样显示 
      合计:2 名  2 批  800 元        ¦  YES 
      ———————————————————————————————— 
      ¦                              总计:5 名 4 批  1520 元   
      

  2.   

    因为是这样的.如果SQL查询出来的数据如果有一条是"合计"或者是"总计这样的就会
    多出一条空白的出来.几名,几批,多少元,这都是在SQL语句里面计算出来的.不是在
    HTML里面写的.