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语句呢
希望有高手来回答一下!谢谢 展开
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语句呢
希望有高手来回答一下!谢谢 展开
2个回答
展开全部
楼主的语句本来就运行不了,上边那个瞎复制,都不运行一遍发什么发。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 广告
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分...
点击进入详情页
本回答由七鑫易维信息技术提供
展开全部
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';
试试
(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';
试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询