三年前有一个问题得到了完全回答,所以我不想污染这个问题,因为这是对该问题的延伸。较早的问题是这个 。
好的,我有一个包含以下列的表
- ID
- 外键ID
- 属性名
- 属性值
- 已创建
一些数据可能如下所示:
ID, ForeignKeyId, AttributeName, AttributeValue, Created
1, 1, 'EmailPreference', 'Text', 1/1/2010
2, 1, 'EmailPreference', 'Html', 1/3/2010
3, 1, 'EmailPreference', 'Text', 1/10/2010
4, 2, 'EmailPreference', 'Text', 1/2/2010
5, 2, 'EmailPreference', 'Html', 1/8/2010
我想运行一个查询,告诉我每个不同 ForeignKeyId 和 AttributeName 的指定 REQUEST_DATE 的最新“创建”日期,使用 Created 列确定最新值。
CreatedDate 的“2010 年 1 月 4 日”的示例输出将是:
ForeignKeyId AttributeName AttributeValue Created
-------------------------------------------------------
1 'EmailPreference' 'Text' 1/2/2010
2 'EmailPreference' 'Html' 1/3/2010
CreatedDate 的“2010 年 1 月 9 日”的示例输出将是:
ForeignKeyId AttributeName AttributeValue Created
-------------------------------------------------------
1 'EmailPreference' 'Text' 1/2/2010
2 'EmailPreference' 'Html' 1/8/2010
如何使用 SQL Server 2008 做到这一点?
到目前为止,我有:
DECLARE @REQUEST_DATE varchar(10)
SELECT @REQUEST_DATE = '1/9/2010'
select t1.* from (select ForeignKeyId,AttributeName, max(Created) AS MaxCreated
from YourTable
group by ForeignKeyId,AttributeName) t2
join YourTable t1 on
t2.ForeignKeyId = t1.ForeignKeyId
and t2.AttributeName = t1.AttributeName
and t2.MaxCreated = t1.Created
但是我不知道在哪里设置限制以仅包括在请求日期之前带有“已创建”的行