Рассчитать предыдущее значение СУММЫ - PullRequest
0 голосов
/ 24 марта 2011

У меня есть 2 SQL Server 2005 таблицы: Names и Scores

Таблица имен:

  NameID, Name,   Age
  1,      'John', 23
  2,      'Ryan', 20

Таблица результатов:

  ScoreID, NameID, ScoreDate,  ScoreValue
  1,       1,      01/01/2011, 250
  2,       1,      02/01/2011, 300
  3,       1,      03/01/2011, 100
  4,       2,      01/01/2011, 150
  5,       2,      02/01/2011, 350
  6,       2,      03/01/2011, 200

Я хочу получить за данный месяц:

Name, Age, current ScoreValue, sum(ScoreValue) for previous months

Примерно так выглядит месяц february:

John, 23, 300, 550
Ryan, 20, 350, 500

1 Ответ

0 голосов
/ 24 марта 2011

Подумайте, это то, что вы хотите:

select n.Name,
       s1.ScoreId, 
       s1.nameId, 
       s1.ScoreValue,
       sum(s2.ScoreValue) Prevmonths
from   names n
       inner join scores s1 on n.NameId = s1.NameId
       left  join scores s2 -- make left join in case no previous month
         on  s1.NameId = s2.NameId 
         and s1.ScoreDate >= s2.ScoreDate -- >= means include current onth
group by n.Name,
       s1.ScoreId, 
       s1.nameId, 
       s1.ScoreValue

ГДж

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...