选择最大值为列的行

时间:2014-01-02 17:32:45

标签: 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

如果同一alt_bill_id有两行,我需要获取忽略最少acct_id的数据。在这种情况下,我需要忽略acct_id 12345和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

2 个答案:

答案 0 :(得分: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;

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

答案 1 :(得分:0)

我使用了这样的查询:

SELECT T1.* FROM CI_BILL T1
WHERE ALT_BILL_ID IN (SELECT MAX(ALT_BILL_ID)
FROM CI_BILL T2 GROUP BY T2.ACCT_ID);