我正在使用SQL
,我想选择结果numero_engin if exist else numero_train
。所以我习惯coalesce
这样做。要删除重复的行,我尝试使用distinct
. 但是使用时的问题distinct
,我失去了行的顺序。
这是我的要求:
SELECT DISTINCT on (req.cle) req.cle,*
FROM (SELECT coalesce(p.numero_engin, p.numero_train) AS cle, *
FROM last_position p
WHERE 1=1
AND p.source_localisation LIKE 'B%'
ORDER BY p.numero_engin, p.utc_horodatage_observation DESC) AS req
ORDER BY req.cle,req.utc_horodatage_observation DESC
此请求返回按重复行排序的结果:
SELECT COALESCE(p.numero_engin, p.numero_train) AS cle, *
FROM last_position p
WHERE 1=1
AND p.source_localisation LIKE 'B%'
ORDER BY p.numero_engin, p.utc_horodatage_observation DESC
但是全局请求添加时distinct
,结果显示混乱。