17,377
社区成员
发帖
与我相关
我的任务
分享
SELECT
*
FROM
tab t1
WHERE
EXISTS (
SELECT
1
FROM
( SELECT t2.cjd, max( sj ) maxtime FROM tab t2 WHERE sj < '2019-10-10 08:00:00' and cjz > 0 GROUP BY t2.cjd ) t3
WHERE
t1.cjd = t3.cjd
AND t1.sj = t3.maxtime
)
with tab1 as(
SELECT to_date('2019/6/12 8:22:55', 'yyyy/mm/dd hh24:mi:ss') SJ,9 CJZ,'A1' CJD FROM DUAL UNION ALL
SELECT to_date('2019/6/12 8:1:55', 'yyyy/mm/dd hh24:mi:ss') SJ,-99 CJZ,'A1' CJD FROM DUAL UNION ALL
SELECT to_date('2019/6/12 8:22:55', 'yyyy/mm/dd hh24:mi:ss') SJ,9 CJZ,'A2' CJD FROM DUAL UNION ALL
SELECT to_date('2019/6/12 8:1:55', 'yyyy/mm/dd hh24:mi:ss') SJ,20 CJZ,'A2' CJD FROM DUAL
)
select distinct t1.cjd,
first_value(t1.cjz) over(partition by t1.cjd order by abs(to_char(t1.sj, 'sssss') - 3600 * 8)) ,
first_value(t1.sj) over(partition by t1.cjd order by abs(to_char(t1.sj, 'sssss') - 3600 * 8))
from tab1 t1
where t1.cjz > 0
;
with tab1 as(
SELECT to_date('2019/6/12 8:22:55', 'yyyy/mm/dd hh24:mi:ss') SJ,9 CJZ,'A1' CJD FROM DUAL UNION ALL
SELECT to_date('2019/6/12 8:1:55', 'yyyy/mm/dd hh24:mi:ss') SJ,-99 CJZ,'A1' CJD FROM DUAL UNION ALL
SELECT to_date('2019/6/12 8:22:55', 'yyyy/mm/dd hh24:mi:ss') SJ,9 CJZ,'A2' CJD FROM DUAL UNION ALL
SELECT to_date('2019/6/12 8:1:55', 'yyyy/mm/dd hh24:mi:ss') SJ,20 CJZ,'A2' CJD FROM DUAL
)
select distinct t1.cjd, first_value(t1.cjz) over(partition by t1.cjd order by abs(to_char(t1.sj, 'sssss') - 3600 * 8))
from tab1 t1
;