SQL查询语句的问题

我有一张地铁站表Subway,如下ticker_idtxn_timetxn_stationtrans_code卡号时分秒站牌进站或出站比如0011025201010001... 我有一张地铁站表Subway,如下
ticker_id txn_time txn_station trans_code
卡号 时分秒 站牌 进站或出站
比如
001 102520 101 0
001 114000 109 1
002 121102 105 0
002 131102 121 1
001 120055 109 0
001 140343 116 1
前两行表示一个人在101进站,在109出站。
我现在想查询出他的进出站表,
select first.ticker_id, first.txn_station as station1, second.txn_station as station2, from Subway first,Subway second
where first.ticker_id=second.ticker_id and first.trans_code='0' and second.trans_code='1'
但是遇到一个问题,假如一个人进站多次并出站多次,
查询出来的结果就会不正确,如上面的表,
我希望的结果是:
ticker_id station1 station2
001 101 109
001 109 116
002 105 121
而实际的结果是_
ticker_id station1 station2
001 101 109
001 109 116
001 101 116
001 109 109
002 105 121
进出站应该是按时间匹配,第一个进站和第一个出站匹配,第二个进站和第二个出站匹配
请问该怎样正确的写这条sql语句呢
希望有高手来回答一下!谢谢
展开
 我来答
badkano
2017-10-25 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885370
团长

向TA提问 私信TA
展开全部

楼主的语句本来就运行不了,上边那个瞎复制,都不运行一遍发什么发。oracle和sqlserver下运行语句如下:

select a.ticket_id,a.txn_station,b.txn_station from 
(select row_number() over (partition by ticket_id order by txn_time) rn,subway.* from subway) a,
(select row_number() over (partition by ticket_id order by txn_time) rn,subway.* from subway) b
where a.ticket_id=b.ticket_id and a.trans_code=0 and b.trans_code=1 and a.txn_station<>b.txn_station and a.rn=b.rn-1
order by a.ticket_id

结果:

其他数据库另外说明

七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
胡桐那么伤
2017-10-25 · TA获得超过1376个赞
知道小有建树答主
回答量:665
采纳率:81%
帮助的人:149万
展开全部
select first.ticker_id, first.txn_station as station1, s.station2, from Subway first inner join
(select second.ticker_id as t,second.txn_station as station2 from Subway second where second.trans_code='1') s on
first.ticker_id=s.t and first.trans_code='0';
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式