求SQL语句可以查询2个字段的组合的不重复结果,注意是排列组合的组合。

比如我有一个表:
列1,列2,列3
A,B,2
B,A,3
A,B,4
B,C,3
C,A,5
我需要的结果是:对我来说(A,B)或者(B,A)是一样的组合,碰到这样的组合我就要对第三列进行求和,最后展示的结果如下:
列1,列2,列3
A,B,10
B,C,3
C,A,5
对于(A,B)或者(B,A),最后展示是任意其中一种就可以。
献出做高分悬赏,请高手赐教,谢谢啊!解决再加送分!!!
对了,ps我用的access。
擦,算错了,展示结果第一行的列3是9,就是前三行的求和

例:表名为T

SQL语句为:

 

SELECT t1.A AS A,t1.B AS B, t1.C+t2.C AS C FROM

(

  SELECT * FROM

  ( 

    SELECT A, B, Sum(T.C) AS C

    FROM T

    GROUP BY T.A, T.B

   ) 

   AS  t1,

  (

   SELECT A, B, Sum(T.C) AS C

   FROM T

   GROUP BY T.A, T.B

  ) 

  AS  t2

  WHERE t1.A=t2.B AND t1.B=t2.A

)

WHERE t1.A<t1.B

 

UNION

 

SELECT t5.A AS A, t5.B AS B, t5.C AS C

FROM T AS t5 

LEFT JOIN

(SELECT t3.A AS A, t3.B AS B, t3.C AS C

FROM T AS t3 INNER JOIN (SELECT t1.A AS A ,t1.B AS B FROM

 (

  SELECT * FROM

  ( 

    SELECT A, B

    FROM T

    GROUP BY T.A, T.B

   ) 

   As  t1,

  (

   SELECT A, B

   FROM T

   GROUP BY T.A, T.B

  ) 

  AS  t2

  WHERE t1.A=t2.B AND t1.B=t2.A

 ) AS t2

)  AS t4 ON (t3.B = t4.B) AND (t3.A = t4.A)

)AS t6 ON t5.A=t6.A AND t5.B=t6.B

WHERE t6.A IS NULL 

 

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-12
select col,sum(col3)
from
(select iif(col1>col2,col+col2,col2+col1) col,col3
from table)
group by col

求SQL语句可以查询2个字段的组合的不重复结果,注意是排列组合的组合...
SQL语句为:SELECT t1.A AS A,t1.B AS B, t1.C+t2.C AS C FROM (SELECT * FROM (SELECT A, B, Sum(T.C) AS C FROM T GROUP BY T.A, T.B )AS t1,(SELECT A, B, Sum(T.C) AS C FROM T GROUP BY T.A, T.B )AS t2 WHERE t1.A=t2.B AND t1.B=t2.A )...

...和不同字段1共同存在字段2值的记录,求SQL语句
select *, count(distinct value) from 表a group by value 结果:id value count(distinct name)3 e 1 2 f 1 最后一项是多余的,不用管就行了,目的达到。。。group by 必须放在 order by 和 limit之前,不然会报错 查询某个字段重复!select from 表a u where u.value in...

求SQL语句根据字段分组
select date, count(date) cnt from user where date is not null group by date 结果:date cnt 1月 2 2月 2 3月 1 在上面语句基础上改进,使之与要求结果一致:select max(case when date = '1月' then cnt else 0 end ) 1月,max(case when date = '2月' then cnt e...

俩个表之间没有ID联系,该怎么用sql语句查询呢?
没有ID联系的话, 假如又不加条件。 那么结果就是2个表的 排列组合。例如:CREATE TABLE [T1] (name varchar(10));go CREATE TABLE [T2](name varchar(10));go INSERT INTO T1 SELECT '东' UNION ALL SELECT '南' UNION ALL SELECT '西' UNION ALL SELECT '北'go INSERT INTO T2 SELECT...

求SQL语句,一张表中的两个字段,关联到同一个字典表
,课程号(的objid),得分(NUM))假设有三个家庭分别为1,2,3科目 选择 r1.stid,r1.num ,r2.num,r3.num出租车从 记录R1,R2记录,记录R3 哪里 r1.stid = r2.stid 和r2.stid = r3.stid 和r1.objid = 1 和r2.objid = 2 和r3.objid = 3 不知道,如果这样的结果是 ...

SQL多个条件查询语句
1、首先我们打开电脑里的SQL打开一个数据库。2、然后我们点击界面上方菜单栏里的表选项打开数据库的一张表进行查询。3、然后我们选择表右上角的加号键。4、然后我们在编辑器中输入如图所示代码进行数据查询。5、然后我们点击运行查看运行结果。6、多条件查询最终结果如图所示我们可以看到多条件查询语句成功...

excel排列组合的解决方法
排列组合步骤1:打开"排列组合.XLS"excel 排列组合的解决方法图1 排列组合步骤2:打开"Microsoft Query"excel 排列组合的解决方法图2 排列组合步骤3:选择数据源:EXCEL FILES*,不要勾选"使用查询向导" 确定 excel 排列组合的解决方法图3 排列组合步骤4:打开存放在电脑E:盘上的"排列组合.xls"文件,...

数据库中表A有字段ID,FATHERID两个字段 其中当ID=FATHERID时表示此ID...
DECLARE @num numeric(18,0)select @num = ID from FATHERID where ID = 2 select * from FATHERID where ID> @num

请教关于排列组合的计算pl\/sql如何写
上标m,(这里打不出上下标,就打成C(n.m))表示从n个元素中取出m 个元素的不同的方法数.如从5个人中选2人去开会,不同的选法有C(5,2)=10种.C(n,m)的计算方法是C(n,m)=n!\/[m!(n-m)!]=n*(n-1)*...*(n-m+1)\/[1*2*...*m],如C(5,2)=[5*4]\/[1*2]=10.

求sql语句,只修改重复数据中的一条记录
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2)最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)(四)查询重复 select * from ...

相似回答