|
建一个表
-- Create table
create table T_CHARGERECORD
(
F_YEAR NUMBER(18),
F_MONTH NUMBER(18),
F_MONEY NUMBER(18,4)
)
tablespace POWER
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
录入下面的数据:
2007 1 12.0000
2007 2 23.0000
2007 3 43.0000
2007 4 45.0000
2007 5 0.0000
2007 6 23.0000
2007 7 213.0000
2007 8 43.0000
2007 9 0.0000
2007 10 0.0000
2007 11 0.0000
2007 12 0.0000
2008 1 0.0000
2008 2 0.0000
2008 3 21.0000
2008 4 0.0000
执行下面的SQL(查连续6个月金额为0)
SELECT *
FROM
(SELECT f_Year,f_Month,f_DateTime - ROWNUM AS f_GroupID,f_Money
FROM
(SELECT * FROM
(SELECT f_Year,f_Month,f_Year * 12 + f_Month AS f_DateTime,f_Money
FROM t_ChargeRecord
WHERE f_Money = 0)
ORDER BY f_Year,f_Month))
WHERE f_GroupID IN
(SELECT f_GroupID
FROM
(SELECT f_Year,f_Month,f_DateTime - ROWNUM AS f_GroupID,f_Money
FROM
(SELECT * FROM
(SELECT f_Year,f_Month,f_Year * 12 + f_Month AS f_DateTime,f_Money
FROM t_ChargeRecord
WHERE f_Money = 0)
ORDER BY f_Year,f_Month))
GROUP BY f_GroupID
HAVING COUNT(*) >= 6)
得到下面的结果
2007 9 24091 0.0000
2007 10 24091 0.0000
2007 11 24091 0.0000
2007 12 24091 0.0000
2008 1 24091 0.0000
2008 2 24091 0.0000
其中第三列可以不输出. |
|