Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Oracle,选择不同的无序对_Sql_Oracle_Distinct - Fatal编程技术网

SQL Oracle,选择不同的无序对

SQL Oracle,选择不同的无序对,sql,oracle,distinct,Sql,Oracle,Distinct,我的表有两列,它们标识了两个相互关联的不同个体;然而,任何一对夫妇可能会出现不止一次,其中个人在两列之间切换(例如,A向B出售100,B向A出售150): 我需要获得一个表,其中每个对只出现一次,即我需要找到不同的无序对,并对所有对应行的值求和: id1 id2 value A B 250 C B 110 我如何才能得到一个“索引”为不同的无序夫妇?我应该如何完成这项任务 编辑:额外发行。假设每个Id都有一个属性,例如国家: id1 id2 country

我的表有两列,它们标识了两个相互关联的不同个体;然而,任何一对夫妇可能会出现不止一次,其中个人在两列之间切换(例如,A向B出售100,B向A出售150):

我需要获得一个表,其中每个对只出现一次,即我需要找到不同的无序对,并对所有对应行的值求和:

id1  id2  value
 A    B    250
 C    B    110
我如何才能得到一个“索引”为不同的无序夫妇?我应该如何完成这项任务


编辑:额外发行。假设每个Id都有一个属性,例如国家:

id1  id2  country1 country2 value
 A    B         IT      FR   100
 C    B         US      FR   110
 B    A         FR      IT   150
显然,我可以在第二步中使用联接将它们返回到结果表中。但是,有没有办法把它们放在第一位呢?

您可以使用
least()
grest()

您可以使用
最小值()
最大值()


伟大的我必须在原来的问题上添加一些东西,我有一些id1和id2的属性(比如country1和country2)。我可以在会合后把它们拿回来,但有没有更优雅的方法让它们留在桌子上?(也许我需要问第二个问题)。@Giuseppe。我建议你再问一个问题。另外,一定要解释当属性在不同的行上不同时会发生什么,否则会匹配。太好了。我必须在原来的问题上添加一些东西,我有一些id1和id2的属性(比如country1和country2)。我可以在会合后把它们拿回来,但有没有更优雅的方法让它们留在桌子上?(也许我需要问第二个问题)。@Giuseppe。我建议你再问一个问题。另外,一定要解释如果不同行上的属性不同,那么会发生什么情况,否则会匹配。
id1  id2  country1 country2 value
 A    B         IT      FR   100
 C    B         US      FR   110
 B    A         FR      IT   150
select least(id1, id2) as id1, greatest(id1, id2) as id2, sum(value)
from t
group by least(id1, id2), greatest(id1, id2)