SQL-Toad for Oracle v11.6。 -使用Distinct后尝试为特定字段数据中的每个唯一值选择第一行

时间:2020-08-19 11:20:37

标签: sql oracle distinct

希望以下信息对您有所帮助。我已经在Toad for oracle中运行以下代码:

select distinct cc_orig, cc_base, txn_orig, txn_base 
from table a

已按照以下方式返回了信息

cc_orig      cc_base        txn_orig      txn_base

GBP          CAD             50           35
GBP          CAD             75           45
GBP          CAD             20           10
EUR          CAD             10            8
EUR          CAD             13           11
AUD          CAD             90           50
AUD          CAD             15            5
AUD          CAD             80           45

对于cc_orig字段中的每个唯一值,我只希望退回一行(这与哪一行无关紧要),因此新结果将类似于以下内容:

cc_orig      cc_base        txn_orig      txn_base
GBP          CAD             50           35
EUR          CAD             10            8
AUD          CAD             90           50

希望这是有道理的,并且有人可以提供帮助-我认为这类似于Postgres中的Distinct On,但这在Toad中似乎不起作用

1 个答案:

答案 0 :(得分:0)

您可以使用窗口功能:

select cc_orig, cc_base, txn_orig, txn_base
from (select cc_orig, cc_base, txn_orig, txn_base,
             row_number() over (partition by cc_orig order by cc_orig) as seqnum
      from table a
     ) a
where seqnum = 1;

请注意,您不需要select distinctrow_number()只会选择一个(任意)行。