表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已退休,之前的在岗消费则以退休来统计人次和消费金额。
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已退休,之前的在岗消费则以退休来统计人次和消费金额。
from test
group by 退休标志
你那个表TEST的主键,怎么是2个004,主键不是唯一的吗?
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;
tangren又被你抢先了!
呵呵!
同时谢谢你给我发的信息