请问不支持使用开窗函数,怎么转换常规写法?

2023-02-06 16:03:49 +08:00
 ffw5b7
SELECT
MAX(oc2.CREATEDTIME ) OVER (PARTITION BY oc2.RENEWAL_FIRST_CON) ,oc2.CONTRACT_ID

FROM
OSR_CONTRACT oc2

INNER join
(SELECT CONTRACT_ID FROM OSR_CONTRACT oc WHERE oc.renewal_first_con IS NULL AND IS_RENEWAL = 'N') AS a

ON a.CONTRACT_ID=oc2.RENEWAL_FIRST_CON


想查出最大时间的这条合同 id 。用时间关联查询感觉不托。一时间想不到其他写法。sql 基本功差。
1152 次点击
所在节点    MySQL
5 条回复
ffw5b7
2023-02-06 16:04:14 +08:00
不妥……
ffw5b7
2023-02-06 16:08:44 +08:00
SELECT oc3.CONTRACT_ID from OSR_CONTRACT oc3
INNER JOIN
(
SELECT
MAX(oc2.CREATEDTIME ) AS CREATEDTIME
FROM
OSR_CONTRACT oc2
INNER join OSR_CONTRACT oc ON oc.CONTRACT_ID=oc2.RENEWAL_FIRST_CON
WHERE oc.renewal_first_con IS NULL AND oc.IS_RENEWAL = 'N'
GROUP BY oc2.RENEWAL_FIRST_CON
) AS a
ON oc3.CREATEDTIME = a.CREATEDTIME



用时间关键感觉不妥
ffw5b7
2023-02-07 09:04:13 +08:00
没有办法可能只能用时间关联先实现了。
ffw5b7
2023-02-07 10:16:28 +08:00
就是分组后取每一组内最新的数据。
xsonglive491
2023-02-08 16:15:40 +08:00
楼主可以看一下
select oc1.id
from OSR_CONTRACT as oc1
left join OSR_CONTRACT as oc2
on oc1.CONTRACT_ID=oc2.CONTRACT_ID
and oc.CREATEDTIME<oc2.CREATEDTIME
where oc2.id is null

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/913654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX