SQL 服务器,在不同列中查找交叉值

SQL Server, find cross value in different columns

我需要帮助 sql 服务器查询。我有很多这样的行,我的 table 有 3 列,例如 a、b、c。

      a          b          c
     ---        ---        ---
    hello      world       10
     hey        you        80
    world      hello       20
     my         day        15
    merhaba    dunya       40
    bugun      nasilsin    75
    dunya      merhaba     20

所以我想在不同的列中找到交叉值,并添加 c 列值。所以在查询之后我想看到那个;

      a          b          c
     ---        ---        ---
    hello      world       30
     hey        you        80
      my        day        15
    merhaba    dunya       60
     bugun     nasilsin    75

抱歉我的英语不好,谢谢你的回答...

编辑:答案无效。我都试过了。伙计们,你们对这个解决方案有什么想法吗?

这是一种方法

create table t(a varchar(10), b varchar(10), c varchar(10))

insert into t values('hello','world',10)
insert into t values('world','hello',20)

select  min(a) as a
       ,max(b) as b
       ,sum(cast(c as int)) as c
  from t as x
 group by case when a>b then a
            else b
       end

如果有不匹配的行,或者 "pairs" ,那么:

CREATE TABLE mytable(
   a      VARCHAR(50) NOT NULL
  ,b      VARCHAR(50) NOT NULL
  ,c      INTEGER  NOT NULL
);
INSERT INTO mytable(a,b,c) VALUES ('hello','world',10);
INSERT INTO mytable(a,b,c) VALUES ('hey','you',80);
INSERT INTO mytable(a,b,c) VALUES ('world','hello',20);
INSERT INTO mytable(a,b,c) VALUES ('my','day',15);
INSERT INTO mytable(a,b,c) VALUES ('merhaba','dunya',40);
INSERT INTO mytable(a,b,c) VALUES ('bugun','nasilsin',75);
INSERT INTO mytable(a,b,c) VALUES ('dunya','merhaba',20);


GO
7 rows affected
select t.a, t.b, sum(t.c + coalesce(t2.c,0))
from mytable t
left join mytable t2 on t.a = t2.b and t.b = t2.a
group by  t.a, t.b


GO
a       | b        | (No column name)
:------ | :------- | ---------------:
my      | day      |               15
merhaba | dunya    |               60
world   | hello    |               30
dunya   | merhaba  |               60
bugun   | nasilsin |               75
hello   | world    |               30
hey     | you      |               80

db<>fiddle here