我的输入表看起来像这样
Source Destn Value
-----------------------
A B 1
B A 2
期望的输出 - > A B 3
在PostgreSQL中获取上述结果的相应查询是什么?
答案 0 :(得分:1)
试试这个:
SELECT CASE WHEN Source < Destn THEN Source ELSE Destn END,
CASE WHEN Source >= Destn THEN Source ELSE Destn END,
SUM(Value)
FROM mytable
GROUP BY CASE WHEN Source < Destn THEN Source ELSE Destn END,
CASE WHEN Source >= Destn THEN Source ELSE Destn END
修改:信用转到@Nick Barnes
可以使用LEAST
和GREATEST
简化查询:
SELECT least("Source","Destn"),
greatest("Source","Destn"),
SUM("Value")
FROM mytable
GROUP BY least("Source","Destn"),
greatest("Source","Destn")