嗨,我有一个查询,如下所示:
SELECT device_id, tag_id, at, _deleted, data,
row_number() OVER (PARTITION BY device_id ORDER BY at DESC) AS row_num
FROM mdb_history.devices_tags_mapping_history
WHERE at <= '2019-04-01'
AND _deleted = False
AND (tag_id = '275674' or tag_id = '275673')
AND row_num = 1
但是,当我运行以下查询时,出现以下错误:
ERROR: column "row_num" does not exist
有什么办法可以解决这个问题。我尝试的一种方法是按以下方式使用它:
SELECT * from (SELECT device_id, tag_id, at, _deleted, data,
row_number() OVER (PARTITION BY device_id ORDER BY at DESC) AS row_num
FROM mdb_history.devices_tags_mapping_history
WHERE at <= '2019-04-01'
AND _deleted = False
AND (tag_id = '275674' or tag_id = '275673')) tag_deleted
WHERE tag_deleted.row_num = 1
但这变得太复杂了,因为我对其他查询执行此操作,因为我有连接数,并且我必须按照说明选择列,因此它会导致很多选择语句。以更简单的方式做到这一点的任何智能方式。谢谢