选择最大值为列的行

Vis*_*amy 1 sql

我有一个如下表:

acct_id----+---Bill_Id-------+--Bill_dt-----+---alt_bill_id--
12345          123451           02-JAN-2014     101
12345          123452           02-JAN-2014     102 
12346          123461           02-JAN-2014     103
12347          123471           02-JAN-2014     104
Run Code Online (Sandbox Code Playgroud)

alt_bill_id如果有两行相同,我需要获取忽略最少的数据acct_id.在这种情况下,我需要忽略acct_id12345和alt_bill_id 101 的行.我需要如下结果:

 acct_id----+---Bill_Id-------+--Bill_dt-----+---alt_bill_id--
    12345          123452           02-JAN-2014     102 
    12346          123461           02-JAN-2014     103
    12347          123471           02-JAN-2014     104
Run Code Online (Sandbox Code Playgroud)

Dam*_*ack 5

您必须使用子查询来查找最高值(bill_id),然后加入该子查询.像这样:

SELECT main.* FROM my_table AS main
  JOIN (
        SELECT MAX(bill_id) AS bill_id
         FROM my_table 
     GROUP BY acct_id
        ) AS highest
  ON highest.bill_id = main.bill_id;
Run Code Online (Sandbox Code Playgroud)

对于想要试用它的人来说,这里是SQLFiddle:http://sqlfiddle.com/#!2/fc66a/2