Thread: Help with SQL statement - Thanks

Help with SQL statement - Thanks

From
"Henry"
Date:
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





Re: Help with SQL statement - Thanks

From
"Tom Moreau"
Date:
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







Re: Help with SQL statement - Thanks

From
"James Orr"
Date:
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
>