Вычисление суммы двух строк в запросе T-SQL, связанном с суммой двух строк

#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.