我有三列(a,b,c)的表,我需要通过使用列a和b的不同功能来创建新列'd'。
a b c
1 p 2
1 p 3
2 q 4
1 q 2
2 r 4
2 r 2
1 p 2
我需要以下答案,其中d是a和b的唯一列的总和
a b c d
1 p 2 7
1 p 3 7
2 q 4 4
1 q 2 2
2 r 4 6
2 r 2 6
1 p 2 7
列d的结果是
对于distinct(a&b),则将c的值相加。然后将值插入到列d中(匹配不同的值)
您可以尝试在子查询中使用SUM
andgroup by
a
和b
列,然后使用selfjoin
测试DLL
create table t(
a int,
b varchar(5),
c int
);
insert into t values (1,'p',2);
insert into t values (1,'p',3);
insert into t values (2,'q',4);
insert into t values (1,'q',2);
insert into t values (2,'r',4);
insert into t values (2,'r',2);
insert into t values (1,'p',2);
询问
SELECT t1.*,t2.d
FROM T t1 INNER JOIN (
SELECT a,b,SUM(c) d
FROM T
GROUP BY a,b
) t2 on t1.a = t2.a and t1.b=t2.b
[结果]:
| a | b | c | d |
|---|---|---|---|
| 1 | p | 2 | 7 |
| 1 | p | 3 | 7 |
| 2 | q | 4 | 4 |
| 1 | q | 2 | 2 |
| 2 | r | 4 | 6 |
| 2 | r | 2 | 6 |
| 1 | p | 2 | 7 |
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句