SELECT * FROM TRAIN_JL_DEFINE WHERE TO_DATE(TO_CHAR(CUR_DATE,'YYYY-MM-DD'),'YYYY-MM-DD')=TO_DATE('2011-2-20','YYYY-MM-DD') and train_name='Z74/Z73' order by id
这是我的SQL语句,查出来的数据是ID TRAIN_NAME BZ_NAME CD_NAME bz_state
331564 Z74/Z73 Z74/73直一 合京车队 Z73/Z74
331592 Z74/Z73 Z74/73直二 合京车队 Z74/Z73
331620 Z74/Z73 Z74/73直三 合京车队 Z74 要这条
331648 Z74/Z73 Z74/73直四 合京车队 休
331676 Z74/Z73 T63/64特二 合京车队 休
331704 Z74/Z73 T63/64特一 合京车队 休
331732 Z74/Z73 K747/748快三 合京车队 Z73 要这条
331760 Z74/Z73 K747/748快四 合京车队 Z73/Z74现在只想要上面的那两条,排序就是 order by id,一个在休字的前面,一个在休字的后面。
这是我的SQL语句,查出来的数据是ID TRAIN_NAME BZ_NAME CD_NAME bz_state
331564 Z74/Z73 Z74/73直一 合京车队 Z73/Z74
331592 Z74/Z73 Z74/73直二 合京车队 Z74/Z73
331620 Z74/Z73 Z74/73直三 合京车队 Z74 要这条
331648 Z74/Z73 Z74/73直四 合京车队 休
331676 Z74/Z73 T63/64特二 合京车队 休
331704 Z74/Z73 T63/64特一 合京车队 休
331732 Z74/Z73 K747/748快三 合京车队 Z73 要这条
331760 Z74/Z73 K747/748快四 合京车队 Z73/Z74现在只想要上面的那两条,排序就是 order by id,一个在休字的前面,一个在休字的后面。
解决方案 »
- 大师求助:下面的求出了一个月某字段的总数
- oracle存储过程执行传入的sql语句
- decode的使用 在线等!!!!!!!!!
- oracle如何复制多条记录,并更改SEQ的。
- oracle数据库重建实例,重建表空间,重新还原后,速度变的很慢~
- JAVA+ORACLE,我怎样调用Sequence?
- 我在用sqlldr进行文本数据导入时,出现SQL*Loader-524: 在 datafile (c:\test.ctl) 结尾发现部分记录
- 请教一个关于触发器的问题!望大家不吝赐教!
- 怎样配置net manager??
- Oracle树形结构递归问题
- 两个大表关联,删除数据.怎么删?
- 存储过程为什么if后面的插入动作没有执行
ID TRAIN_NAME BZ_NAME CD_NAME bz_state
331564 Z74/Z73 Z74/73直一 合京车队 Z73/Z74
331592 Z74/Z73 Z74/73直二 合京车队 Z74/Z73
331620 Z74/Z73 Z74/73直三 合京车队 Z74 要这条
331648 Z74/Z73 Z74/73直四 合京车队 休
331676 Z74/Z73 T63/64特二 合京车队 休
331704 Z74/Z73 T63/64特一 合京车队 休
331732 Z74/Z73 K747/748快三 合京车队 Z73 要这条
331760 Z74/Z73 K747/748快四 合京车队 Z73/Z74
331620 Z74/Z73 Z74/73直三 合京车队 Z74 要这条
331732 Z74/Z73 K747/748快三 合京车队 Z73 要这条order by id是按id升序还是降序呢?如果以TRAIN_NAME BZ_NAME CD_NAME 分组的话,
331620 Z74/Z73 Z74/73直三 合京车队 Z74 要这条 --这条id最大
331732 Z74/Z73 K747/748快三 合京车队 Z73 要这条 --这条id最小
TO_DATE('2011-2-20','YYYY-MM-DD')AND train_name='Z74/Z73'
AND (bz_state in ('Z73','Z74')ORDER BY id[/code]
ROWNUM 做个行标识,在结果集里找出下一条或上一条那个字段还有 “休” 字的,然后在外边的嵌套查询里把有“休” 字的记录除去,应该是你要的结果!
[/code]
SELECT '331564' id, 'Z74/Z73' train_name, 'Z74/73直一' bz_name, '合京车队' cd_name, 'Z73/Z74' bz_state FROM dual
UNION ALL
SELECT '331592', 'Z74/Z73', 'Z74/73直二', '合京车队', 'Z74/Z73' FROM dual
UNION ALL
SELECT '331620', 'Z74/Z73', 'Z74/73直三', '合京车队', 'Z74 要这条' FROM dual
UNION ALL
SELECT '331648', 'Z74/Z73', 'Z74/73直四', '合京车队', '休' FROM dual
UNION ALL
SELECT '331676', 'Z74/Z73', 'T63/64特二', '合京车队', '休' FROM dual
UNION ALL
SELECT '331704', 'Z74/Z73', 'T63/64特一', '合京车队', '休' FROM dual
UNION ALL
SELECT '331732', 'Z74/Z73', 'K747/748快三', '合京车队', 'Z73 要这条' FROM dual
UNION ALL
SELECT '331760', 'Z74/Z73', 'K747/748快四', '合京车队', 'Z73/Z74' FROM dual
)
SELECT id, train_name, bz_name, cd_name, bz_state FROM(
SELECT id, train_name, bz_name, cd_name, bz_state,
lead(bz_state)over(order by id) lead_state,
lag(bz_state)over(order by id) lag_state
FROM tab
)
WHERE (lead_state='休' OR lag_state='休') AND bz_state!='休'
--结果:
ID TRAIN_NAME BZ_NAME CD_NAME bz_state
331620 Z74/Z73 Z74/73直三 合京车队 Z74 要这条
331732 Z74/Z73 K747/748快三 合京车队 Z73 要这条
[/code]
ID TRAIN_NAME BZ_NAME CD_NAME BZ_STATE
---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
331564 Z74/Z73 Z74/73直一 合京车队 Z73/Z74
331592 Z74/Z73 Z74/73直二 合京车队 Z74/Z73
331620 Z74/Z73 Z74/73直三 合京车队 Z74
331648 Z74/Z73 Z74/73直四 合京车队 休
331676 Z74/Z73 T63/64特二 合京车队 休
331704 Z74/Z73 T63/64特一 合京车队 休
331732 Z74/Z73 K747/748快三 合京车队 Z73
331760 Z74/Z73 K747/748快四 合京车队 Z73/Z74
8 rows selected
SQL>
SQL> with tab as (select a.*,row_number()over(order by id) rn from train_jl_define a)
2 SELECT a.id, a.train_name, a.bz_name, a.cd_name, a.bz_state
3 FROM tab a
4 WHERE (EXISTS (SELECT 1
5 FROM tab b
6 WHERE a.rn = b.rn - 1
7 AND b.bz_state = '休') OR EXISTS
8 (SELECT 1
9 FROM tab b
10 WHERE a.rn = b.rn + 1
11 AND b.bz_state = '休'))
12 AND a.bz_state <> '休';
ID TRAIN_NAME BZ_NAME CD_NAME BZ_STATE
---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
331620 Z74/Z73 Z74/73直三 合京车队 Z74
331732 Z74/Z73 K747/748快三 合京车队 Z73
SQL> [/code]
只能说,给我的感觉很不爽!
我的数据是从数据库查出来的,你用
WITH tab AS(
SELECT '331564' id, 'Z74/Z73' train_name, 'Z74/73直一' bz_name, '合京车队' cd_name, 'Z73/Z74' bz_state FROM dual
UNION ALL
SELECT '331592', 'Z74/Z73', 'Z74/73直二', '合京车队', 'Z74/Z……
这种方式,小弟对这个方式的用法不是很明白。还望指教。