oracle查询sql语句求解

2024-11-09 05:11:40
推荐回答(2个)
回答(1):

这个我可以帮你,但是我有几个问题需要补充一下:
您在说第二个如果的时候,是否比较的列是否与第一个如果一致?
我的理解是这样的:
您是否要查询的是在查询的结果集中要将dd,tkftm,pdeptm,rtkftm 进行相同的列的记录全部显示,然后如果dd,tkftm,pdeptm,rtkftm 作为分组,其中tkftm,pdeptm,rtkftm不一致的只显示一行,但是这一行要有个排序,是按照那列为基础并且是按倒序还是降序排序显示?
这些你描述的清楚点,我可以将sql写给你。

回答(2):

select rown,fltno,dd,tkftm,pdeptm,rtkftm,gate,remark from
(select rownum rown,fltno,dd,tkftm,pdeptm,rtkftm,gate,remark,
lead(dd,1)over(order by rownum) dd1,
lead(tkftm,1)over(order by rownum) tkftm1,
lead(pdeptm,1)over(order by rownum) pdeptm1,
lead(rtkftm,1)over(order by rownum) rtkftm1
from tab)
where dd=dd1 and tkftm=tkftm1 and pdeptm=pdeptm1 and rtkftm=rtkftm1 OR
((tkftm<>tkftm1 and pdeptm<>pdeptm1 and rtkftm<>rtkftm1) AND rown<2);
程序用emp表测试过。这里只是修改了表名字段名。