注册

达梦不支持窗口函数怎么办, 导致迁移数据困难,有没有替代写法?

being 2024/08/07 538 1

不支持postgres的窗口函数 ROW_NUMBER。 比如下列sql不支持。

WITH RankedData AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY CONCAT(to_char(monitor_time, 'yyyyMMdd'::varchar), '', data_type::varchar) ORDER BY monitor_time DESC, id asc) AS rn
FROM
tb_litter_data
where
device_indexcode = #{deviceIndexcode} and and data_type in (1,2,3) and monitor_time >= '2024-08-01 00:00:00' and monitor_time <= '2024-08-31 23:59:59' )
SELECT * FROM RankedData WHERE rn = 1 order by monitor_time desc, id asc

上面这个sql的作用是: 可以按照(日期 + 数据类型)拼接成的字符串进行分组,每个分组内数据降序排序,行号从1开始递增。 最后取每个分组内的第一行数据。

达梦不支持,那么有没有替代写法 ?

回答 0
暂无回答
扫一扫
联系客服