From: Harald Fuchs <nospam@sap.com>
To: pgsql-sql@postgresql.org
Subject: Re: Diffcult query
Date: 22 Mar 2003 10:52:19 +0100
Message-ID: <pusmtfohik.fsf@srv.protecting.net> (raw)
References: <d9Iea.117330$JE5.48428@news2.central.cox.net>
In article <d9Iea.117330$JE5.48428@news2.central.cox.net>,
"Dan Winslow" <d.winslow@cox.net> writes:
> Hi folks. This is giving me fits. I feel like it oughta be simple, but
> apparantly its not...I think.
> Given a table :
> create table tablea (
> code1 varchar(32),
> code2 varchar(32),
> cost int
> );
> and the rows
> code1 code2 cost
> ----------------------------------
> "aaa" "bbb" 2
> "ddd" "eee" 3
> "bbb" "aaa" 6
> "ggg" "hhh" 4
> I need a ( preferably single ) query that will sum the costs for all unique
> pairs of codes, without regard to column order. That is, for summing
> purposes, rows 1 and 3 are identical, and should produce the sum of 8 for
> the unordered pair("aaa","bbb"). It should also, of course, prevent the case
> where ("bbb","aaa") is considered a seperate pair. Any ideas would be much
> appreciated.
How about this one?
SELECT CASE WHEN code1 < code2 THEN code1 ELSE code2 END ||
'\0' ||
CASE WHEN code1 < code2 THEN code2 ELSE code1 END AS codes,
SUM(cost) AS costs
FROM tablea
GROUP BY codes;
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: nospam@sap.com
Subject: Re: Diffcult query
In-Reply-To: <pusmtfohik.fsf@srv.protecting.net>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox