行转列怎么写?

-一个大坑 2017-07-05 11:07:50

SELECT A.DERIVENO,
A.CARNO,
TO_CHAR(C.COMPLETEDT, 'yyyy-mm-dd hh24:mi:ss') AS BEGINTIME,
TO_CHAR(C.COMPLETEDT, 'yyyy-mm-dd hh24:mi:ss') AS ENDTIME
FROM APP_SEND A, APP_MAIN B, APP_SCHEDULE C
WHERE A.DERIVENO NOT IN (SELECT DERIVENO FROM APP_RIDECOST)
AND A.DERIVENO = B.APPNO
AND C.APPNO = A.DERIVENO
AND A.STATUS > 6

BEGINTIME取C.CITY_SEQ最小时的值
ENDTIME取C.CITY_SEQ最大时的值
C.CITY_SEQ自增,最小时为1
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-一个大坑 2017-07-06
  • 打赏
  • 举报
回复
引用 4 楼 qq_38206656 的回复:
SELECT T1.deriveno, T1.BEGINTIME, T2.ENDTIME FROM (SELECT deriveno, COMPLETEDT BEGINTIME FROM A WHERE CITY_SEQ = '1') T1 LEFT JOIN (SELECT deriveno, COMPLETEDT ENDTIME FROM (SELECT T.*, ROW_NUMBER() OVER(PARTITION BY deriveno ORDER BY CITY_SEQ DESC) RN FROM A T) WHERE RN = 1) T2 ON T1.deriveno = T2.deriveno[/code]WITH语句是模拟数据,后面的select是查询语句,没有加上你的CARNO字段
虽然不太看得懂,不过效果达到了
imcmuc 2017-07-05
  • 打赏
  • 举报
回复
你的上述查询结果做表A
with A as (
select 'APP201706240004' deriveno,'1' CITY_SEQ,'20170605' COMPLETEDT FROM DUAL
UNION
select 'APP201706240004' deriveno,'2' CITY_SEQ,'20170606' COMPLETEDT FROM DUAL
UNION
select 'APP201706240005' deriveno,'1' CITY_SEQ,'20170607' COMPLETEDT FROM DUAL
UNION
select 'APP201706240005' deriveno,'2' CITY_SEQ,'20170608' COMPLETEDT FROM DUAL
UNION
select 'APP201706240005' deriveno,'3' CITY_SEQ,'20170609' COMPLETEDT FROM DUAL
UNION
select 'APP201706240005' deriveno,'4' CITY_SEQ,'20170610' COMPLETEDT FROM DUAL
)

SELECT T1.deriveno, T1.BEGINTIME, T2.ENDTIME
FROM (SELECT deriveno, COMPLETEDT BEGINTIME FROM A WHERE CITY_SEQ = '1') T1
LEFT JOIN (SELECT deriveno, COMPLETEDT ENDTIME
FROM (SELECT T.*,
ROW_NUMBER() OVER(PARTITION BY deriveno ORDER BY CITY_SEQ DESC) RN
FROM A T)
WHERE RN = 1) T2 ON T1.deriveno = T2.deriveno
WITH语句是模拟数据,后面的select是查询语句,没有加上你的CARNO字段
-一个大坑 2017-07-05
  • 打赏
  • 举报
回复
引用 2 楼 sxq129601 的回复:
没看懂你的需求,可以给你个案例取optime最大的对应的money值
max(money) keep(dense_rank first order by optime desc)


这是我查的数据,现在需要做成下面的效果

BEGINTIME是开始时间,取C.CITY_SEQ=1时C.COMPLETEDT列的值
ENDTIME是结束时间,取C.CITY_SEQ最大时C.COMPLETEDT列的值
sxq129601 2017-07-05
  • 打赏
  • 举报
回复
没看懂你的需求,可以给你个案例取optime最大的对应的money值 max(money) keep(dense_rank first order by optime desc)
-一个大坑 2017-07-05
  • 打赏
  • 举报
回复

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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