Wishlist: subqueries that return multiple columns
От | Greg Stark |
---|---|
Тема | Wishlist: subqueries that return multiple columns |
Дата | |
Msg-id | 87ekihzn7g.fsf@stark.xeocode.com обсуждение исходный текст |
Ответы |
Re: Wishlist: subqueries that return multiple columns
|
Список | pgsql-hackers |
I've several times wanted a way to add multiple select output columns using a single expression. A typical scenario would be if the columns come from a subselect from another table where repeating the subselect means slow performance as well as awkward and repetitive code. Sometimes the subselect can be rewritten as a join, but that is not always the case. Consider something like: select customer.*, (select avg(amount),sum(amount) from purchases where purchases.customer_id = customer.customer_id ) as (avg_purchase, total_purchase), (select avg(amount),sum(amount) from quotes wherequotes.customer_id = customer.customer_id ) as (avg_quote, total_quote) from customer (Ok, actually that could be done as a join using some trickery with GROUP BY, but I have other scenarios where it can't because the subselects overlap.) With the new support for complex data types like arrays and structures perhaps I could do this by constructing a RECORD in each subselect and then wrapping another layer around the query where I explicitly list each element of the RECORD that I want to include in the result set. But it would be nice to have some more convenient mechanisms for handling this case. -- greg
В списке pgsql-hackers по дате отправления: