我正在使用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 |
+----+--------+--------+
答案 0 :(得分: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()
子句即可添加更多感兴趣的组。
答案 1 :(得分:0)
如果想要所有可能的排列,则可以使用自连接,这只会为两个不同的用户提供所有排列。对于第三个用户,您需要anotehr自加入,依此类推。
select CONCAT(t1.User,"plus", t2.User), (t1.Salary + t2.Salary)
FROM mytable as t1 join mytable as t2
ON t1.ID <> t2.ID;