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

推荐订阅源

爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
宝玉的分享
宝玉的分享
V
V2EX
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
美团技术团队
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
B
Blog RSS Feed

博客园 - 郭大侠

【原创】还有比我这更简单的静态树吗? - 郭大侠 - 博客园 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;