我有一个如下表:
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)
您必须使用子查询来查找最高值(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