我有一张如下表格:
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
答案 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);