惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
美团技术团队
N
Netflix TechBlog - Medium
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
The Cloudflare Blog
量子位
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 郭大侠

【原创】还有比我这更简单的静态树吗? - 郭大侠 - 博客园 asp.net获得路径的方法 用表格实现简单网站左侧导航 div里面套3个div,居中显示,兼容ie6-8,ff,咋就这么麻烦呢 网站设计之asp.net网站多语言版本 vs2005常用快捷键 Repeater显示父子表数据,无闪烁 jquery学习相关 show div and mouse can move on the div js map js+div+css 模拟弹出对话框 送大家一首歌曲,《保卫延安》片尾曲 vs2005调试javascript url重写 总有人问js二级联动问题,给出我写的一个例子 - 郭大侠 - 博客园 中国房地产的实质 北京奥运会赛事电视直播表(绝对完整)--每天就抱着电视看吧! 动物为什么会预知地震,地震后为什么会下雨? 新工资税计算方法及年终奖个税算法
oracle横表变竖表问题
郭大侠 · 2009-01-04 · via 博客园 - 郭大侠

近日遇到一问题,即根据航班航程信息生成航班的航段视图,其中航程数据是类似于 AAA,BBB,CCC,DDD 的字符串,
按照飞机的飞行路线,每两个机场均可以形成一个航段,故此例中,应该有以下航段:
AAA-BBB
AAA-CCC
AAA-DDD
BBB-CCC
BBB-DDD
CCC-DDD
如果有n段航程,则应该有 n*(n-1)/2 个航段,经过CSDN网友的指点,现总结如下,供大家分享:
--这句是技巧所在
--SELECT ROWNUM RN FROM ALL_OBJECTS WHERE ROWNUM <= 5 
--drop table T_TEST;
create table T_TEST
(
  CARRIERID VARCHAR2(2) not null,
  FLTNO     VARCHAR2(20) not null,
  FLTDATE   DATE not null,
  IO        CHAR(1) not null,
  APT       VARCHAR2(64) not null
);
insert into T_TEST Values ('CZ','123',To_date('2008-12-31','yyyy-MM-dd'),'I',',OAK,ANC,NRT,PEK,PVG,');
insert into T_TEST Values ('CZ','123',To_date('2008-12-31','yyyy-MM-dd'),'O',',AAA,BBB,CCC,DDD,');
commit;
select * from T_TEST;

Create or Replace view V_test
as
select T1.CarrierID,t1.FltNO,t1.FltDate,t1.IO,t1.SAPT,t2.EAPT from
(
       SELECT Rownum as rnum,TT.*,SUBSTR(APT,INSTR(APT,',',1,RN) + 1,INSTR(APT,',',1,RN + 1) - INSTR(APT, ',',1,RN) - 1) SAPT
       FROM T_TEST TT,
           (
             SELECT ROWNUM RN FROM ALL_OBJECTS
             WHERE ROWNUM <= (SELECT MAX(LENGTH(TRIM(',' FROM APT)) -LENGTH(REPLACE(TRIM(',' FROM APT),',','')))
             FROM T_TEST TT) + 1
            ) ZZ
) T1,
(           
       SELECT Rownum as rnum,TT.*,SUBSTR(APT,INSTR(APT,',',1,RN) + 1,INSTR(APT,',',1,RN + 1) - INSTR(APT, ',',1,RN) - 1) EAPT
       FROM T_TEST TT,
           (
             SELECT ROWNUM RN FROM ALL_OBJECTS
             WHERE ROWNUM <= (SELECT MAX(LENGTH(TRIM(',' FROM APT)) -LENGTH(REPLACE(TRIM(',' FROM APT),',','')))
             FROM T_TEST TT) + 1
            ) ZZ
) T2
where T1.CarrierID=T2.CarrierID and t1.FltNO=t2.FltNO and t1.FltDate=t2.FltDate and t1.IO=t2.IO
and t1.rnum<t2.rnum and not t1.SApt is null and not t2.EApt is null
order by t1.rnum;

select * from V_test;
--drop view V_test;