表TEST:
ID(主键)  姓名  消费  日期       退休标志(1、在岗 2、退休)
004       张三  20    2010-05-11 1
007       李四  50    2010-06-23 1
002       王五  10    2010-06-23 2
004       张三  100   2010-07-20 2
按退休标志分组,统计消费人次和金额,结果为:
退休标志  消费人次 消费
1         1        50
2         3        130
注:张三在2010-07-20已退休,之前的在岗消费则以退休来统计人次和消费金额。

解决方案 »

  1.   

    select 退休标志,count(id) 消费人次,sum(消费) 消费
    from test
    group by 退休标志
      

  2.   

    我是初学者,问个问题
    你那个表TEST的主键,怎么是2个004,主键不是唯一的吗?
      

  3.   

    with test as (
      select '004' id, '张三' name, 20  amount, date'2010-05-11' pdate,  1 flag from dual union all
      select '007' id, '李四' name, 50  amount, date'2010-06-23' pdate,  1 flag from dual union all
      select '002' id, '王五' name, 10  amount, date'2010-06-23' pdate,  2 flag from dual union all
      select '004' id, '张三' name, 100 amount, date'2010-07-20' pdate,  2 flag from dual)SELECT newflag flag, COUNT(*) cnt, SUM(amount) amount
      FROM (SELECT t.*,
                   CASE
                     WHEN (SELECT COUNT(*)
                             FROM test a
                            WHERE a.id = t.id
                              AND a.flag = 2) > 0 THEN
                      2
                     ELSE
                      1
                   END newflag
              FROM test t)
     GROUP BY newflag;
      

  4.   

    楼上正解
    tangren又被你抢先了!
    呵呵!
    同时谢谢你给我发的信息