Thread: Help with SQL statement - Thanks
There is a table called "Payments" which records every payment that a company has received: CustomerNo Date Amount ---------------------------------------- 3214 2/12 30 3214 4/10 50 9943 4/18 40 9943 5/10 30 9943 2/13 70 1121 5/23 10 1121 4/20 40 1121 3/12 30 (more data...) I want to be able to pull out the last payment made by everyone in a query: CustomerNo Date Amount --------------------------------------- 3214 4/10 50 9943 5/10 30 1121 5/23 10 (other users...) How should I write the SQL statement? Please email to me at henry_lu@hotmail.com. Thank you very much. Henry
For this, you need a derived table: select from Payments p join ( select CustomerNo , Date = max (Date) from Payments group by CustomerNo ) as x on x.CustomerNo = p.CustomerNo and p.Date = x.Date -- Tom ---------------------------------------------------------- Thomas A. Moreau, BSc, PhD, MCSE, MCDBA, MCT SQL Server MVP Columnist, SQL Server Professional Toronto, ON Canada www.pinnaclepublishing.com/sql www.apress.com --- Henry wrote in message ... There is a table called "Payments" which records every payment that a company has received: CustomerNo Date Amount ---------------------------------------- 3214 2/12 30 3214 4/10 50 9943 4/18 40 9943 5/10 30 9943 2/13 70 1121 5/23 10 1121 4/20 40 1121 3/12 30 (more data...) I want to be able to pull out the last payment made by everyone in a query: CustomerNo Date Amount --------------------------------------- 3214 4/10 50 9943 5/10 30 1121 5/23 10 (other users...) How should I write the SQL statement? Please email to me at henry_lu@hotmail.com. Thank you very much. Henry
SELECT * FROM Payments P1 WHERE Date = (SELECT MAX(Date) FROM Payments P2 WHERE P2.CustomerNo = P1.CustomerNo) I think that will do it. - James ----- Original Message ----- From: "Henry" <henry_lu@hotmail.com> To: <pgsql-general@postgresql.org.pgsql-sql@postgresql.org> Sent: Saturday, July 14, 2001 3:16 PM Subject: [SQL] Help with SQL statement - Thanks > There is a table called "Payments" which records every payment that a > company has received: > > CustomerNo Date Amount > ---------------------------------------- > 3214 2/12 30 > 3214 4/10 50 > 9943 4/18 40 > 9943 5/10 30 > 9943 2/13 70 > 1121 5/23 10 > 1121 4/20 40 > 1121 3/12 30 > (more data...) > > > I want to be able to pull out the last payment made by everyone in a query: > > CustomerNo Date Amount > --------------------------------------- > 3214 4/10 50 > 9943 5/10 30 > 1121 5/23 10 > (other users...) > > How should I write the SQL statement? Please email to me at > henry_lu@hotmail.com. Thank you very much. > > Henry > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://www.postgresql.org/search.mpl >