17,086
社区成员
发帖
与我相关
我的任务
分享
select DATE
from (SELECT DATE
FROM TABLE_EXC
WHERE OFFE_VAR = 'S1'
AND DATA_PAR = 3
AND DATE <= to_date('2011-02-21', 'yyyy-mm-dd')
AND WEIGH_PRI <> 0
ORDER BY DATE DESC)
where rownum = 1;
select DATE
from (SELECT DATE
FROM TABLE_EXC
WHERE OFFE_VAR = 'S1'
AND DATA_PAR = 3
AND DATE <= to_date('2011-02-22', 'yyyy-mm-dd')
AND WEIGH_PRI <> 0
ORDER BY DATE DESC)
where rownum = 1;
select DATE
from (SELECT DATE
FROM TABLE_EXC
WHERE OFFE_VAR = 'S1'
AND DATA_PAR = 3
AND DATE <= to_date('2011-02-23', 'yyyy-mm-dd')
AND WEIGH_PRI <> 0
ORDER BY DATE DESC)
where rownum = 1;
-- 通过SQL建立一个子查询,然后与原表进行交叉后,分组求最大值即可。
SELECT MAX(A.DATE)
FROM TABLE_EXC A,
(SELECT to_date('2011-02-21', 'yyyy-mm-dd') DT FROM DUAL UNION ALL
SELECT to_date('2011-02-21', 'yyyy-mm-dd') DT FROM DUAL UNION ALL
SELECT to_date('2011-02-21', 'yyyy-mm-dd') DT FROM DUAL
) B
WHERE OFFE_VAR = 'S1'
AND DATA_PAR = 3
AND WEIGH_PRI <> 0
AND A.DATE <= B.DT
GROUP BY B.DT;
select t.date
from
(
select DATE,row_number() over(partition by trunc(DATE,'dd') order by DATE desc) as rn
from TABLE_EXC
where FFE_VAR = 'S1' AND DATA_PAR = 3 and WEIGH_PRI <> 0
and DATE>=to_date('2011-02-20', 'yyyy-mm-dd') and DATE<to_date('2011-02-23', 'yyyy-mm-dd')
)t
where t.rn=1
union all
select t.DATE from TABLE_EXC t
where t.OFFE_VAR = 'S1' AND t.DATA_PAR = 3 and t.WEIGH_PRI <> 0
and not exists(select 1 from TABLE_EXC where trunc(DATE,'dd')=trunc(t.DATE,'dd')
and DATE>t.DATE and OFFE_VAR = 'S1' AND DATA_PAR = 3 and WEIGH_PRI <> 0
)
and t.DATE>=to_date('2011-02-20', 'yyyy-mm-dd') and t.DATE<to_date('2011-02-23', 'yyyy-mm-dd')