0

我正在使用 SQL Server 2012,我正在尝试对表的行求和。问题是我没有要分组的列。这可能吗...?您将如何提出疑问?

原表:

+----+------+--------+
| ID | User | Salary |
+----+------+--------+
| 1  | John | 150    |
| 2  | Marie| 120    |
| 3  | Willy| 125    |
| 4  | Juan | 110    |
| 5  |Carlos| 145    |
| 6  | Mike | 115    |
| 7  | Elsie| 100    |
| 8  | Elvie| 500    |
+----+------+--------+

预期结果:

+----+--------+--------+
| ID |  USER  | SALARY |
+----+--------+--------+
|  1 | 1plus2 |    270 |
|  2 | 1plus3 |    275 |
|  3 | 1to4   |    205 |
|  4 | 1plus8 |    650 |
+----+--------+--------+
4

2 回答 2

3

您可以使用表构造函数定义组。例如,对于前两个:

select v.new_user, sum(salary)
from t join
     (values ('1plus2', 1), ('1plus2', 2),
             ('1plus3', 1), ('1plus3', 3)
     ) v(new_user, user)
     on t.user = v.user
group by v.new_user;

只需扩展values()子句以添加更多感兴趣的组。

于 2019-05-16T10:53:46.757 回答
0

如果您想要所有可能的排列,您可以使用自联接,这只会为您提供两个不同用户的所有排列。对于第三个用户,您将需要 anotehr self join 等等。

select CONCAT(t1.User,"plus", t2.User),  (t1.Salary + t2.Salary) 
FROM mytable as t1 join mytable as t2 
ON t1.ID <> t2.ID;
于 2019-05-16T11:01:33.930 回答