OH.看见了交易类型(进出站区分,SORRY
解决方案 »
- 菜鸟求助:无法导入数据库~~~
- 求高手,DBA_REFRESH,DBA_REFRESH_CHILDREN
- 新手请教:SQL语言对表中列的数据类型的修改
- 极头痛,Oracle10g Designer 的登录问题?
- 关于NOT IN 语句??
- 有没有人帮我写一下这个sql语句啊?
- 请问有没有像T_SQL中select * into aaa from bbb这样直接产生新表的句子。
- 请问为什么在SYSTEM下无法建立触发器?多谢
- 请问如何在oracle8i的存储过程中建表
- ORA-06512: 在 "JTHFM.CUX_EBS_SYN_VENDER_PKG", line 7 ORA-01722: 无效数字 无效的数字,请联系系统管
- create or replace package body 存储过程编译时总报错
- 写个存储过程,不知道怎么写
select max(decode(rownum,1, (case when 交易类型为空 then 空 else 交易时间 end 进站交易时间)))--进站时间
group by 卡号
order by 交易类型 --假设1为进 2为出
with TB as
(select 交易时间,
交易设备号,
乘客卡号,
交易类型,
票卡类型,
线路编号,
交易站点,
lead(交易时间) over(order by 交易时间 nulls last) 下次时间,
lead(交易类型) over(order by 交易时间 nulls last) 下次交易类型,
lead(交易站点) over(order by 交易时间 nulls last) 下次交易地点,
lead(交易设备号) over(order by 交易时间 nulls last) 下次交易设备号
from 详细交易表)
select 乘客卡号,
票卡类型,
交易时间 进站交易时间,
交易设备号 进站设备号,
交易站点 进站站点,
decode(下次交易类型, '出站', 下次时间, NULL) 出站交易时间,
decode(下次交易类型, '出站', 交易设备号, NULL) 出站设备号,
decode(下次交易类型, '出站', 下次交易地点, NULL) 出站站点
from TB
where 交易类型 = '进站'
(SELECT 1 S_TIME,'I' TYP FROM DUAL UNION ALL
SELECT 2 S_TIME,'I' TYP FROM DUAL UNION ALL
SELECT 3 S_TIME,'O' TYP FROM DUAL UNION ALL
SELECT 4 S_TIME,'O' TYP FROM DUAL UNION ALL
SELECT 5 S_TIME,'I' TYP FROM DUAL UNION ALL
SELECT 6 S_TIME,'O' TYP FROM DUAL UNION ALL
SELECT 7 S_TIME,'I' TYP FROM DUAL UNION ALL
SELECT 8 S_TIME,'O' TYP FROM DUAL UNION ALL
SELECT 9 S_TIME,'I' TYP FROM DUAL
)
SELECT T.S_TIME,T.TYP,decode(END_typ,'I',NULL,T.END_TYP) END_TYP,DECODE(T.END_TYP,'I',0,t.end_time) END_TIME
FROM (SELECT T1.*,
LEAD(TYP) OVER(ORDER BY S_TIME) END_TYP,
LEAD(S_TIME) OVER(ORDER BY S_TIME) END_TIME
FROM T1) T
WHERE T.TYP = 'I'
UNION ALL
SELECT NULL,NULL,T.TYP,T.S_TIME
FROM (SELECT T1.*,
LAG(TYP) OVER(ORDER BY S_TIME) END_TYP,
LAG(S_TIME) OVER(ORDER BY S_TIME) END_TIME
FROM T1) T
WHERE T.TYP = 'O'
AND T.END_TYP='O';
with TB as
(select 交易时间,
交易设备号,
乘客卡号,
交易类型,
票卡类型,
线路编号,
交易站点,
lead(交易时间) over(order by 交易时间 nulls last) 下次时间,
lead(交易类型) over(order by 交易时间 nulls last) 下次交易类型,
lead(交易站点) over(order by 交易时间 nulls last) 下次交易地点,
lead(交易设备号) over(order by 交易时间 nulls last) 下次交易设备号,
lag(交易类型) over(order by 交易时间 nulls last) 上次交易类型
from tmp_z)
select 乘客卡号,
票卡类型,
decode(交易类型, '进站', 交易时间, NULL) 进站交易时间,
decode(交易类型, '进站', 交易设备号, NULL) 进站设备号,
decode(交易类型, '进站', 交易站点, NULL) 进站站点,
decode(交易类型, '出站', 交易时间, decode(下次交易类型, '出站', 下次时间, NULL)) 出站交易时间,
decode(交易类型, '出站', 交易设备号, decode(下次交易类型, '出站', 交易设备号, NULL)) 出站设备号,
decode(交易类型, '出站', 交易站点, decode(下次交易类型, '出站', 下次交易地点, NULL)) 出站站点
from TB
where 交易类型 = '进站'
or (交易类型 = '出站' and nvl(上次交易类型, 'A') <> '进站')
with tb as
(select '2013-11-01 10:08:20' x from dual union all
select '2013-11-01 10:08:21' from dual union all
select '2013-11-01 10:08:22' from dual union all
select '2013-11-01 10:08:23' from dual union all
select '2013-11-01 10:08:24' from dual
)
select
X,
LAG(X) over(ORDER BY X) 上次时间,
LEAD(X) over(ORDER BY X) 下次时间
from TB