SQL连接按滚动日期期间

雪人

我正在使用SQL Server 2005数据库。在其中,我有一个Audit表,并且想知道何时相对于期间更改了值。该期间仅包含一个开始日期,并且在此之后的所有审核更改都应显示到下一个期间开始日期为止。如果没有下一个期间的开始日期,我也想显示结果。

这是创建表和输入数据的代码:

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

谁能解释使用什么技术?

select 
  (select top 1 Name from Period where StartDate < DateModified order by StartDate desc),
  a.OldValue,  
  a.NewValue  
from Audit a

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较日期期间和日期期间长度

来自分类Dev

合并连续日期期间

来自分类Dev

合并连续的日期期间

来自分类Dev

tablesorter按日期期间/日期格式排序dd.mm.yyyy-dd.mm.yyyy

来自分类Dev

转换日期期间以显示日期格式

来自分类Dev

列出两个日期之间的日期期间

来自分类Dev

SQL,按日期间隔查询

来自分类Dev

如何在获取日期期间避免数组错误

来自分类Dev

创建表格以比较多个日期期间的数据

来自分类Dev

使用条件对连续日期期间进行分组

来自分类Dev

SQL查询按日期计算滚动差异

来自分类Dev

SQL查询按日期计算滚动差异

来自分类Dev

如何从最接近当前日期的不同日期期间获得具有不同价格的产品的默认价格?

来自分类Dev

R-按日期期限排序(例如5y,10d)

来自分类Dev

SQL:如何按日期范围连接两个表

来自分类Dev

SQL 按日期/小时/分钟和连接表分组记录

来自分类Dev

不显示日期期限

来自分类Dev

错误日期期限PHP

来自分类Dev

T-SQL按日期和对象计算X期间的总计

来自分类Dev

按日期间隔插入N行

来自分类Dev

MongoDB按日期间隔分组

来自分类Dev

按日期间隔分组Oracle

来自分类Dev

按日期间隔插入N行

来自分类Dev

Oracle SQL日期间查询

来自分类Dev

SQL查找日期间隔

来自分类Dev

SQL按日期分组

来自分类Dev

SQL按日期分组

来自分类Dev

sql按日期联接

来自分类Dev

如何获得最大日期期限