[SQL] removing duplicates and using sort

2013-09-14 Thread Nathan Mailg
I'm using 8.4.17 and I have the following query working, but it's not quite
what I need:

SELECT DISTINCT ON (refid) id, refid, lastname, firstname, appldate
FROM appl WHERE lastname ILIKE 'Williamson%' AND firstname ILIKE
'd%'
GROUP BY refid, id, lastname, firstname, appldate ORDER BY refid,
appldate DESC;

I worked on this awhile and is as close as I could get. So this returns
rows as you'd expect, except I need to somehow modify this query so it
returns the rows ordered by lastname, then firstname.

I'm using distinct so I get rid of duplicates in the table where refid (an
integer) is used as the common id that ties like records together. In other
words, I'm using it to get only the most recent appldate (a date) for each
group of refid's that match the lastname, firstname where clause.

I just need the rows returned from the query above to be sorted by
lastname, then firstname.

Hope I explained this well enough. Please let me know if you need more info.

Thanks!


Re: [SQL] removing duplicates and using sort

2013-09-17 Thread Nathan Mailg
Yes, that's correct, modifying the original ORDER BY gives:

ORDER BY lastname, firstname, refid, appldate DESC;
ERROR:  SELECT DISTINCT ON expressions must match initial ORDER BY expressions

Using WITH works great:

WITH distinct_query AS (
SELECT DISTINCT ON (refid) id, refid, lastname, firstname, appldate
FROM appl WHERE lastname ILIKE 'Williamson%' AND firstname ILIKE 'd%'
GROUP BY refid, id, lastname, firstname, appldate
ORDER BY refid, appldate DESC
)
SELECT * FROM distinct_query ORDER BY lastname, firstname;

Thank you!



-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql