не знаю, действительно ли это то, что вам нужно, но вам, возможно, придется взглянуть на GROUP BY вместо DISTINCT ...
, если у вас есть несколько записей с одинаковым идентификатором участника,вам, возможно, потребуется указать точное указание того, как вы хотите выбрать одно из остальных
например, чтобы получить дату последнего вступления каждого участника:
SELECT memberid, max(startingdate)
FROM annualfees
GROUP BY memberid
но если вам нужно идентифицировать одну запись таким образом, а также отображать другие столбцы, я думаю вам может потребоваться сделать некоторые хитрости, подобные этой ...
например, выполнить запрос вышеупомянутого SELECT с объединением, чтобы объединить другие нужные вам столбцы:
SELECT subq.memid, subq.startdate, a.expirydate, a.amount
FROM (
SELECT memberid AS memid, max(startingdate) AS startdate
FROM annualfees
GROUP BY memberid ) subq
INNER JOIN annualfees a ON a.memberid = subq.memid
AND a.startingdate = subq.startdate
от начала до конца, также показывая таблицу данных (o / p было отслежено / захваченоиспользуя "SET VERIFY ON") ...
-- show all rows
select *
from annualfees
order by memberid, startingdate
MEMBERID STARTINGDATE EXPIRYDATE AMOUNT
---------------------- ------------------------- -------------------- --------------------
1 02-DEC-09 05-FEB-10 111
1 25-JUN-10 25-JUN-11 222
2 25-APR-10 25-JUN-13 333
3 rows selected
/
-- show one member`s data using max(startingdate) as selector.
SELECT memberid, max(startingdate)
FROM annualfees
GROUP BY memberid
MEMBERID MAX(STARTINGDATE)
---------------------- -------------------------
1 25-JUN-10
2 25-APR-10
2 rows selected
/
-- show above data joined with the other columns.
SELECT subq.memid, subq.startdate, a.expirydate, a.amount
FROM (
SELECT memberid AS memid, max(startingdate) AS startdate
FROM annualfees
GROUP BY memberid ) subq
INNER JOIN annualfees a ON a.memberid = subq.memid AND a.startingdate = subq.startdate
MEMID STARTDATE EXPIRYDATE AMOUNT
---------------------- ------------------------- -------------------- --------------------
1 25-JUN-10 25-JUN-11 222
2 25-APR-10 25-JUN-13 333
2 rows selected
/