Суммировать строки без поля для группировки - PullRequest
0 голосов
/ 16 мая 2019

Я использую 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 |
+----+--------+--------+

Ответы [ 2 ]

3 голосов
/ 16 мая 2019

Вы можете определить группы, используя конструктор таблицы.Например, для первых двух:

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(), чтобы добавить больше групп интересов.

0 голосов
/ 16 мая 2019

Если вы хотите все возможные перестановки, вы можете использовать самостоятельное соединение. Это даст вам все перестановки только для двух разных пользователей.Третий пользователь может нуждаться в самостоятельном присоединении и т. Д.

select CONCAT(t1.User,"plus", t2.User),  (t1.Salary + t2.Salary) 
FROM mytable as t1 join mytable as t2 
ON t1.ID <> t2.ID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...