Re: Diffcult query
От | Harald Fuchs |
---|---|
Тема | Re: Diffcult query |
Дата | |
Msg-id | pusmtfohik.fsf@srv.protecting.net обсуждение исходный текст |
Ответ на | Diffcult query ("Dan Winslow" <d.winslow@cox.net>) |
Список | pgsql-sql |
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 ELSEcode1 END AS codes, SUM(cost) AS costs FROM tablea GROUP BY codes;
В списке pgsql-sql по дате отправления: