3,496
社区成员
发帖
与我相关
我的任务
分享
[TEST@ora10gr1#2009-11-29/11:04:14] SQL>create table SUBSCRIBTE_HIST
2 (
3 IDSEQ NUMBER(8) not null,
4 RECORDSEQUENCEID VARCHAR2(18) not null,
5 USERIDTYPE NUMBER(4) not null,
6 USERID VARCHAR2(36) not null,
7 SERVICETYPE VARCHAR2(2) not null,
8 SPID VARCHAR2(21) not null,
9 PRODUCTID VARCHAR2(21) not null,
10 UPDATETYPE NUMBER(4) not null,
11 UPDATETIME DATE not null,
12 UPDATEDESC VARCHAR2(100),
13 LINKID VARCHAR2(20),
14 CONTENT VARCHAR2(140),
15 EFFECTIVEDATE DATE not null,
16 EXPIREDATE DATE not null,
17 TIMESTAMP VARCHAR2(10) not null,
18 ENCODESTR VARCHAR2(32),
19 BATCHSTATUS NUMBER(1) default 0 not null,
20 CREATEDATE DATE default sysdate not null
21 )
22 ;
Table created.
[TEST@ora10gr1#2009-11-29/11:04:15] SQL>
[TEST@ora10gr1#2009-11-29/11:04:15] SQL>insert into SUBSCRIBTE_HIST (IDSEQ, RECORDSEQUENCEID, USERIDTYPE, USERID, SERVICETYPE, SPID, PRODUCTID, UPDATETYPE, UPDATETIME, UPDATEDESC, LINKID, CONTENT, E
ECTIVEDATE, EXPIREDATE, TIMESTAMP, ENCODESTR, BATCHSTATUS, CREATEDATE)
2 values (10033, '1258705055531', 1, '13912345678', '1', '1001', '82', 2, to_date('14-11-2009 19:17:57', 'dd-mm-yyyy hh24:mi:ss'), '取消订购', null, 'qxc', to_date('14-11-2009 19:17:57', 'dd-mm-y
y hh24:mi:ss'), to_date('14-11-2009 19:17:57', 'dd-mm-yyyy hh24:mi:ss'), '1120161735', null, 1, to_date('14-11-2009 19:17:57', 'dd-mm-yyyy hh24:mi:ss'));
1 row created.
[TEST@ora10gr1#2009-11-29/11:04:15] SQL>insert into SUBSCRIBTE_HIST (IDSEQ, RECORDSEQUENCEID, USERIDTYPE, USERID, SERVICETYPE, SPID, PRODUCTID, UPDATETYPE, UPDATETIME, UPDATEDESC, LINKID, CONTENT, E
ECTIVEDATE, EXPIREDATE, TIMESTAMP, ENCODESTR, BATCHSTATUS, CREATEDATE)
2 values (10031, '1258704985937', 1, '13912345678', '1', '1001', '82', 1, to_date('14-11-2009 19:17:12', 'dd-mm-yyyy hh24:mi:ss'), '订购', null, 'dzc', to_date('14-11-2009 19:17:12', 'dd-mm-yyyy
24:mi:ss'), to_date('14-11-2009 19:17:12', 'dd-mm-yyyy hh24:mi:ss'), '1120161625', null, 1, to_date('14-11-2009 19:17:12', 'dd-mm-yyyy hh24:mi:ss'));
1 row created.
[TEST@ora10gr1#2009-11-29/11:04:16] SQL>insert into SUBSCRIBTE_HIST (IDSEQ, RECORDSEQUENCEID, USERIDTYPE, USERID, SERVICETYPE, SPID, PRODUCTID, UPDATETYPE, UPDATETIME, UPDATEDESC, LINKID, CONTENT, E
ECTIVEDATE, EXPIREDATE, TIMESTAMP, ENCODESTR, BATCHSTATUS, CREATEDATE)
2 values (10032, '1258705025343', 1, '13912345678', '1', '1001', '82', 2, to_date('14-11-2009 19:17:38', 'dd-mm-yyyy hh24:mi:ss'), '取消订购', null, 'qxc', to_date('14-11-2009 19:17:38', 'dd-mm-y
y hh24:mi:ss'), to_date('14-11-2009 19:17:38', 'dd-mm-yyyy hh24:mi:ss'), '1120161705', null, 1, to_date('14-11-2009 19:17:38', 'dd-mm-yyyy hh24:mi:ss'));
1 row created.
[TEST@ora10gr1#2009-11-29/11:04:16] SQL>
[TEST@ora10gr1#2009-11-29/11:04:17] SQL>select distinct
2 decode(greatest(t1.ordertime,t2.canceltime),null,2,t1.ordertime,1,t2.canceltime,2) AS status
3 --nvl2(t2.canceltime,case when t1.ordertime>t2.canceltime then 1 else 2 end,1) as status
4 from
5 (select userid,servicetype,spid,productid,updatetype,max(updatetime) ordertime
6 from subscribte_hist where updatetype=1 and batchstatus=1 group by userid,servicetype,spid,productid,updatetype
7 )t1
8 full join
9 (
10 select userid,servicetype,spid,productid,updatetype,max(updatetime) canceltime
11 from subscribte_hist where updatetype=2 and batchstatus=1 group by userid,servicetype,spid,productid,updatetype
12 ) t2
13 on (t1.userid=t2.userid and t1.spid=t2.spid and t1.productid=t2.productid);
STATUS
----------
2
[TEST@ora10gr1#2009-11-29/11:04:26] SQL>select distinct
2 --decode(greatest(t1.ordertime,t2.canceltime),null,2,t1.ordertime,1,t2.canceltime,2) AS status
3 nvl2(t2.canceltime,case when t1.ordertime>t2.canceltime then 1 else 2 end,1) as status
4 from
5 (select userid,servicetype,spid,productid,updatetype,max(updatetime) ordertime
6 from subscribte_hist where updatetype=1 and batchstatus=1 group by userid,servicetype,spid,productid,updatetype
7 )t1
8 full join
9 (
10 select userid,servicetype,spid,productid,updatetype,max(updatetime) canceltime
11 from subscribte_hist where updatetype=2 and batchstatus=1 group by userid,servicetype,spid,productid,updatetype
12 ) t2
13 on (t1.userid=t2.userid and t1.spid=t2.spid and t1.productid=t2.productid);
STATUS
----------
2
[TEST@ora10gr1#2009-11-29/11:04:41] SQL>
