Я использую базу данных SQL Server 2005. В нем у меня есть таблица аудита и хотелось бы знать, когда значение было изменено относительно периода. Период просто имеет дату начала и любое изменение аудита после его отображения до следующей даты начала периода. Если нет даты начала следующего периода, я также хотел бы отобразить результат.SQL Регистрация по дате окончания
Вот код для создания таблицы и ввода данных:
CREATE TABLE [dbo].[Period](
[Id] [int] NOT NULL,
[Name] [varchar](50) NOT NULL,
[StartDate] [datetime] NOT NULL
)
INSERT INTO [dbo].[Period] VALUES (1, 'Period 1', '2015-03-01')
INSERT INTO [dbo].[Period] VALUES (2, 'Period 2', '2015-04-01')
INSERT INTO [dbo].[Period] VALUES (3, 'Period 3', '2015-05-01')
CREATE TABLE [dbo].[Audit](
[Id] [int] NOT NULL,
[OldValue] [VARCHAR](50),
[NewValue] [VARCHAR](50),
[DateModified] [DATETIME] NOT NULL,
)
INSERT INTO [dbo].[Audit] VALUES (1, 'Old Value 1', 'New Value 1', '2015-03-27')
INSERT INTO [dbo].[Audit] VALUES (2, 'Old Value 2', 'New Value 2', '2015-04-03')
INSERT INTO [dbo].[Audit] VALUES (3, 'Old Value 3', 'New Value 3', '2015-04-09')
INSERT INTO [dbo].[Audit] VALUES (4, 'Old Value 4', 'New Value 4', '2015-05-12')
http://sqlfiddle.com/#!6/b012c
То, что я хотел бы это, чтобы отобразить данные следующим образом:
Period 1 | Old Value 1 | New Value 1
Period 2 | Old Value 2 | New Value 2
Period 2 | Old Value 3 | New Value 3
Period 3 | Old Value 4 | New Value 4
Может кто-нибудь объяснить, какой метод использовать?
Какая версия SQL Server вы используете? –
К сожалению, SQL Server 2005 :(- Я обновлю вопрос, чтобы уточнить – Yetiish
Являются ли периоды всегда увеличенными на 1 месяц? –