Thread: Combining queries while preserving order in SQL - Help!

Combining queries while preserving order in SQL - Help!

From
Casey Allen Shobe
Date:
Hi there,

I need to do the following in one SQL query:

select field1, field2, field3, field4, field5 from table where field6 < 5
order by field1

And a totals line which shows the sum for each column.

The important part is that I need to preserve the order by of the first query.

Is there any way to do this in one query?

Thank you,

--
Casey Allen Shobe, Open Source Software Solutions
cshobe@osss.net / http://www.osss.net / 770-653-4526


Re: Combining queries while preserving order in SQL - Help!

From
Joel Burton
Date:
On Mon, Dec 02, 2002 at 01:46:38PM -0500, Casey Allen Shobe wrote:
> Hi there,
> 
> I need to do the following in one SQL query:
> 
> select field1, field2, field3, field4, field5 from table where field6 < 5
> order by field1
> 
> And a totals line which shows the sum for each column.
> 
> The important part is that I need to preserve the order by of the first query.
> 
> Is there any way to do this in one query?

create table foo (a int, b int, c int );
insert into foo values (1,2,3);
insert into foo values (4,5,6);

select '' as label,       * 
from   foo 
union all 
select 'TOTAL',       sum(a),       sum(b),      sum(c) 
from   foo 
order by 1,2;

(you wouldn't need the label column to sort by, except that a might
contain negative numbers, so the sum might be _less_ than some/all of
the numbers. by first sorting on this junk column, we can force the
totals at the bottom).

p.s. don't forget the "union __all__", otherwise you'll get rid of
duplicate entries in the your table.

-- 

Joel BURTON  |  joel@joelburton.com  |  joelburton.com  |  aim: wjoelburton
Independent Knowledge Management Consultant