反正我听下来很别扭的sql(求SQL)

qixianzhen002 2017-05-19 03:29:22
元数据如下:
司机 车次 车号 车站 时间 上下车
001 1305 1305 1399 2017/5/18 5:13:01 0
001 1305 1305 1321 2017/5/18 5:35:53 1
001 1305 130581 1321 2017/5/18 5:36:01 0
001 1305 130581 1321 2017/5/18 7:51:01 1
001 1305 130581 1321 2017/5/18 7:52:01 0
001 1305 130581 1399 2017/5/18 8:13:01 1





效果

司机 车次 车号 车站 时间 上车 车站 时间 下车
001 1305 1305 1399 2017/5/18 5:13:01 0 1321 2017/5/18 5:35:53 1
001 1305 130581 1321 2017/5/18 5:36:01 0 1321 2017/5/18 5:51:01 1
001 1305 130581 1321 2017/5/18 7:52:01 0 1399 2017/5/18 8:13:01 1



...全文
469 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qixianzhen002 2017-05-22
  • 打赏
  • 举报
回复
这几条记录有创建时间,用时间升序然后给个序号,1和2,3和4,5和6 这样组合,这个思路可以吗?
qixianzhen002 2017-05-22
  • 打赏
  • 举报
回复
引用 7 楼 wmxcn2000 的回复:
select 司机, 车站, 车号, max(decode(上下车, 0, 上下车, null)) 上车, max(decode(上下车, 0, 时间, null)) 上车时间, max(decode(上下车, 0, 车站, null)) 上车车站, max(decode(上下车, 1, 上下车, null)) 下车, max(decode(上下车, 1, 时间, null)) 下车时间, max(decode(上下车, 1, 车站, null)) 下车车站 from 表 group by 司机, 车次, 车号 order by 司机, 车次, 车号 红色,改成 车次;
还是少了 结果如下: 1 00833 1305 1305 0 2017-05-18 05:13:01 1 2017-05-18 05:35:53 2 00833 1305 130581 0 2017-05-18 07:51:49 1 2017-05-18 08:12:48
qixianzhen002 2017-05-22
  • 打赏
  • 举报
回复
引用 5 楼 baidu_36457652 的回复:

你也可以这样写
select a*,B.车站, B.时间, B.下车 FROM
(select 司机,车次,车号,车站,  时间 ,上下车 AS 上车   from   T1  WHERE  上下车=0)A1
join   (SELECT   司机,车次,车号,车站,  时间 ,上下车 AS 下车   from   T1  WHERE  上下车=1) A2
ON A1.司机=A2.司机 AND A1.,车次=A2.,车次 AND A1.车号=A2.车号
这样查出来的结果有点问题 如下: 3 00833 1305 1305 1399 2017/5/18 5:13:01 1321 2017/5/18 5:35:53 5 00833 1305 130581 1321 2017/5/18 5:36:13 1327 2017/5/18 8:12:48 2 00833 1305 130581 1321 2017/5/18 5:36:13 1321 2017/5/18 7:51:35 4 00833 1305 130581 1321 2017/5/18 7:51:49 1327 2017/5/18 8:12:48 1 00833 1305 130581 1321 2017/5/18 7:51:49 1321 2017/5/18 7:51:35
卖水果的net 2017-05-22
  • 打赏
  • 举报
回复
select 司机, 车站, 车号, max(decode(上下车, 0, 上下车, null)) 上车, max(decode(上下车, 0, 时间, null)) 上车时间, max(decode(上下车, 0, 车站, null)) 上车车站, max(decode(上下车, 1, 上下车, null)) 下车, max(decode(上下车, 1, 时间, null)) 下车时间, max(decode(上下车, 1, 车站, null)) 下车车站 from 表 group by 司机, 车次, 车号 order by 司机, 车次, 车号 红色,改成 车次;
qixianzhen002 2017-05-22
  • 打赏
  • 举报
回复
引用 3 楼 wmxcn2000 的回复:

-- 借楼主语句,用个 max 函数就行了
select 司机,
       车站,
       车号,
       max(decode(上下车, 0, 上下车, null)) 上车,
       max(decode(上下车, 0, 时间, null)) 上车时间,
       max(decode(上下车, 0, 车站, null)) 上车车站,
       max(decode(上下车, 1, 上下车, null)) 下车,
       max(decode(上下车, 1, 时间, null)) 下车时间,
       max(decode(上下车, 1, 车站, null)) 下车车站
  from 表
 group by 司机, 车次, 车号
 order by 司机, 车次, 车号

001 1305 130581 1321 2017/5/18 5:36:01 0 1321 2017/5/18 5:51:01 1 这条记录查不出来是为啥
  • 打赏
  • 举报
回复

你也可以这样写
select a*,B.车站, B.时间, B.下车 FROM
(select 司机,车次,车号,车站,  时间 ,上下车 AS 上车   from   T1  WHERE  上下车=0)A1
join   (SELECT   司机,车次,车号,车站,  时间 ,上下车 AS 下车   from   T1  WHERE  上下车=1) A2
ON A1.司机=A2.司机 AND A1.,车次=A2.,车次 AND A1.车号=A2.车号
  • 打赏
  • 举报
回复
行转列 百度一下很多的。
卖水果的net 2017-05-20
  • 打赏
  • 举报
回复

-- 借楼主语句,用个 max 函数就行了
select 司机,
       车站,
       车号,
       max(decode(上下车, 0, 上下车, null)) 上车,
       max(decode(上下车, 0, 时间, null)) 上车时间,
       max(decode(上下车, 0, 车站, null)) 上车车站,
       max(decode(上下车, 1, 上下车, null)) 下车,
       max(decode(上下车, 1, 时间, null)) 下车时间,
       max(decode(上下车, 1, 车站, null)) 下车车站
  from 表
 group by 司机, 车次, 车号
 order by 司机, 车次, 车号

小当家e 2017-05-19
  • 打赏
  • 举报
回复
select 司机,车次,车号,wm_concat(上车) 上车,wm_concat(上车时间) 上车时间,,wm_concat(上车车站) 上车车站,wm_concat(下车) 下车,wm_concat(下车时间) 下车时间,,wm_concat(下车车站) 下车车站 from ( select 司机,车站, decode(上下车,0,上下车,null) 上车, decode(上下车,0,时间,null) 上车时间, decode(上下车,0,车站,null) 上车车站, decode(上下车,1,上下车,null) 下车, decode(上下车,1,时间,null) 下车时间, decode(上下车,1,车站,null) 下车车站, from 表 ) group by 司机,车次,车号 order by 司机,车次,车号
qixianzhen002 2017-05-19
  • 打赏
  • 举报
回复
顶上去顶上去

3,497

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧