#sql #sql-server
#sql #sql-сервер
Вопрос:
Мой SQL-запрос, связанный с суммой двух строк:
t | sum of t
1 | 1 | (1 0) = 1 the output of sum of t come like this
1 | 2 | (1 1) = 2
1 | 3 | (2 1) = 3
0 | 3 | (3 0) = 3
1 | 4 | (3 1) = 4
Комментарии:
1. кто-нибудь знает, как этот вывод будет поступать в ms access
Ответ №1:
Похоже, вам нужна совокупная сумма. Для этого требуется наличие столбца, который определяет порядок расположения строк в таблице. Помните, что таблица представляет собой неупорядоченный набор, поэтому вам нужен столбец для указания порядка.
Предполагая, что у вас есть такой столбец, в SQL Server 2012 вы можете использовать:
select col1, sum(col1) over (order by id)
from t;
где id
находится столбец упорядочения.
В более ранних версиях у вас есть несколько вариантов, ни один из них не эффективен. Вот один из методов, использующих коррелированный подзапрос:
select col1,
(select sum(t2.col1)
from t as t2
where t2.id <= t.id
) as cume_sum
from t;
Комментарии:
1. @vinu, ну, вы пометили его как
SQL Server
, так что запрос SQL Server — это то, что вы получаете2. здравствуйте, если вы знаете, как это возможно в запросе ms access, пожалуйста, помогите
3. @vinu . , , Коррелированный подзапрос будет работать в MS Access.