oracle 奇葩表 奇葩需求 求解答

qq_36072945 2016-09-07 10:59:09
现在有两张表
过车记录表(百万条记录)
过车ID 设备编号,车道编号,图片路径,过车时间
字段(GCID,SBBH.CDBH,imgurl, GCSJ )
车道信息表 CDXX(千条记录)
(ID SBBH,CDBH) 设备编号是唯一的 一个设备下有多个车道编号
注:两张表没有建立外键

现在需要 一段时间内 所有车道每个车道取一张图片, 没有记录图片留空

求各位大神指点

SELECT DISTINCT sbbh, cdbh
FROM GCJL
WHERE GCSJ >= TO_DATE ('2014-01-15 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND GCSJ <= TO_DATE ('2014-01-15 09:00:00', 'YYYY-MM-DD HH24:MI:SS');

现在只想到这样去重设备编号和车道编号 但是 去重后其他列不显示 求各位大神指点

车道信息表 Left join 过车记录表 只能通过 sbbh and cdbh 会出现大于 车道信息表 条数的记录

求各位大神指点求各位大神指点求各位大神指点求各位大神指点

...全文
631 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
'现在需要 一段时间内 所有车道每个车道取一张图片, 没有记录图片留空' 根据lz的描述,我把设备理解成摄像头或者拍照机,lz要的是所有车道每个车道的取一张图片,那一个车道可能有多个设备拍摄照片,只要取其中一张即可。 若某个车道多个设备,有的拍到了照片有的没拍到,那就要使用row_number按照车道分区图片路径牲畜排序取第一条,也就是有图片的哪条记录,具体语句如下: SELECT A.CDBH,DECODE(B.IMGURL,NULL,NULL,B.IMGURL) AS IMGURL FROM CDXX A LEFT JOIN ( SELECT CDBH,IMGURL,row_number() over(partition by CDBH order by IMGURL) rn FROM GCJL WHERE GCSJ>=DATE1 AND GCSJ<DATE2 ) b WHERE A.SBBH=B.SBBH AND B.RN=1 GROUP BY A.CDBH ; 不知理解的对否?
js14982 2016-09-07
  • 打赏
  • 举报
回复
这个语句就是SBBH,CDBH 有记录,图片路径没记录就显示的空
js14982 2016-09-07
  • 打赏
  • 举报
回复
引用 4 楼 qq_36072945 的回复:
其他列?你要什么列?
qq_36072945 2016-09-07
  • 打赏
  • 举报
回复
引用 2 楼 js14982 的回复:
       SELECT   CDXX.SBBH,cdxx.CDBH,max(imgurl)
  FROM CDXX cdxx left join  GXJL  gcjl
         on CDXX.SBBH=gcjl.sbbh   AND  cdxx.CDBH = gcjl.cdbh 
 WHERE     jgsj >= TO_DATE ('2014-01-15 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
       AND jgsj <= TO_DATE ('2014-01-15 08:00:01', 'YYYY-MM-DD HH24:MI:SS')
 group by CDXX.SBBH,cdxx.CDBH;
大哥 这里用max()是起什么作用的 还有如果我想要 没有记录 显示 imgurl null 怎么弄
引用 3 楼 js14982 的回复:
看的逻辑有点乱,看了2遍才明白 你就是想显示SBBH,CDBH, 然后加任意一条图片记录imgurl ?
最好还有其他列 没有匹配的 图片显示null
js14982 2016-09-07
  • 打赏
  • 举报
回复
看的逻辑有点乱,看了2遍才明白 你就是想显示SBBH,CDBH, 然后加任意一条图片记录imgurl ?
js14982 2016-09-07
  • 打赏
  • 举报
回复
       SELECT   CDXX.SBBH,cdxx.CDBH,max(imgurl)
  FROM CDXX cdxx left join  GXJL  gcjl
         on CDXX.SBBH=gcjl.sbbh   AND  cdxx.CDBH = gcjl.cdbh 
 WHERE     jgsj >= TO_DATE ('2014-01-15 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
       AND jgsj <= TO_DATE ('2014-01-15 08:00:01', 'YYYY-MM-DD HH24:MI:SS')
 group by CDXX.SBBH,cdxx.CDBH;
qq_36072945 2016-09-07
  • 打赏
  • 举报
回复

       SELECT   distinct CDXX.SBBH,cdxx.CDBH
  FROM CDXX cdxx left join  GXJL  gcjl
         on CDXX.SBBH=gcjl.sbbh   AND  cdxx.CDBH = gcjl.cdbh 
 WHERE     jgsj >= TO_DATE ('2014-01-15 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
       AND jgsj <= TO_DATE ('2014-01-15 08:00:01', 'YYYY-MM-DD HH24:MI:SS')
        
这样又无法得到我想要的 图片路径 求解 求解

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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