我想在某些情况下选择不同的行,但是当我在select语句中添加id列时,它将返回所有行???
下面的查询工作正常
select distinct dst_bnk_acnt_id
,dst_cust_id
,org_cust_id
,dst_pos_id
,pmt_typ_cd
from tb_cm_t_pmt_coll
where org_pos_id = 8 OR dst_pos_id = 8 OR dst_bnk_acnt_id = 1 ;
但是,当我想使用id(desc)的顺序选择最新记录时,它将返回所有行!
SELECT distinct id
,dst_bnk_acnt_id
,dst_cust_id
,org_cust_id
,dst_pos_id
,pmt_typ_cd
FROM tb_cm_t_pmt_coll
WHERE org_pos_id = 8 OR dst_pos_id = 8 OR dst_bnk_acnt_id = 1
ORDER BY id DESC;
我知道“ id”列是主键,其所有值都是唯一的,因此所有行都变得唯一。
我只想使用这些[dst_bnk_acnt_id,dst_cust_id,org_cust_id,dst_pos_id,pmt_typ_cd]
列选择一个不同的行,但我也想使用id降序对它们进行排序。
请帮忙。
我将使用窗口函数:
select id,
dst_bnk_acnt_id,
dst_cust_id,
org_cust_id,
dst_pos_id,
pmt_typ_cd
FROM (
SELECT id,
dst_bnk_acnt_id,
dst_cust_id,
org_cust_id,
dst_pos_id,
pmt_typ_cd,
row_number() over (partition by dst_bnk_acnt_id,dst_cust_id,org_cust_id,dst_pos_id,pmt_typ_cd
order by id desc) as rn
FROM tb_cm_t_pmt_coll
WHERE org_pos_id = 8
OR dst_pos_id = 8
OR dst_bnk_acnt_id = 1
)
WHERE rn = 1
ORDER BY id;
该order by id desc
窗口中的功能给出了最高的行id
的行号1,挑选最新id
的独立列的每个组合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句