Альтернатива сверх функции в sqlserver 2008 - PullRequest
1 голос
/ 05 марта 2020
CREATE TABLE Students
(
    Id INT PRIMARY KEY IDENTITY,
    StudentName VARCHAR (50),
    StudentGender VARCHAR (50),
    StudentAge INT
)
GO

INSERT INTO Students VALUES ('Sally', 'Female', 14 )
INSERT INTO Students VALUES ('Edward', 'Male', 12 )
INSERT INTO Students VALUES ('Jon', 'Male', 13 )
INSERT INTO Students VALUES ('Liana', 'Female', 10 )
INSERT INTO Students VALUES ('Ben', 'Male', 11 )
INSERT INTO Students VALUES ('Elice', 'Female', 12 )
INSERT INTO Students VALUES ('Nick', 'Male', 9 )
INSERT INTO Students VALUES ('Josh', 'Male', 12 )
INSERT INTO Students VALUES ('Liza', 'Female', 10 )
INSERT INTO Students VALUES ('Wick', 'Male', 15 )

go

SELECT Id, StudentName, StudentGender, StudentAge,
SUM (StudentAge) OVER (PARTITION BY StudentGender ORDER BY Id) AS RunningAgeTotal
FROM Students

Мне нужны те же выходные данные вышеупомянутого запроса в sql server 2008, пожалуйста, помогите, так как некоторые наши клиенты находятся в sql server 2008

1 Ответ

0 голосов
/ 05 марта 2020

Во-первых, вам следует серьезно рассмотреть вопрос об обновлении SQL Server 2008 до более новой версии, поскольку он не имеет расширенной поддержки с июля прошлого года.

При этом, если вы не можете выполнить обновление, вы можете используйте вместо этого коррелированный подзапрос SUM:

SELECT Id, StudentName, StudentGender, StudentAge, (
        SELECT SUM (StudentAge)
        FROM Students As S1
        WHERE S1.Id <= S0.Id
        AND S1.StudentGender = S0.StudentGender
        GROUP BY StudentGender
        ) As RunningAgeTotal
FROM Students As S0
ORDER BY Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...