作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下表格:
1) TBL (ID, Data, LastUpdated, DateCreated)
2) TBL_LOG(Log_ID, LogCreateDate, ID, Data, LastUpdated, DateCreated)
TBL
用于存储当前数据,而
TBL_LOG
用于存储数据在
TBL
中的每一次更改(使用更新触发器,将从
TBL
删除的记录复制到
TBL_LOG
)。
RelevanceDate
返回数据。
@RelevanceDate = '2011-03-01'
IF TBL.LastUpdated <= @RelevanceDate THEN return data from TBL
ELSE IF Exists data in TBL_LOG where TBL_LOG.LastUpdated <= @RelevanceDate
THEN return most resent data from TBL_LOG where TBL_LOG.LastUpdated <= @RelevanceDate
ELSE IF Exists data in TBL_LOG where TBL_LOG.LastUpdated > @RelevanceDate
THEN return the oldest data from TBL_LOG.LastUpdated > @RelevanceDate
ELSE return data from TBL
TBL
中的所有记录,此函数应使用上述逻辑返回数据。
最佳答案
在调查结束时,我最终遇到了以下问题:
DECLARE @RelevanceDate DATETIME
SET @RelevanceDate = '2012-03-01'
SELECT
MainData.ID, MainData.Data, MainData.LastUpdated, MainData.DateCreated
FROM (
SELECT
*
,ROW_NUMBER() OVER(PARTITION BY AllData.ID, AllData.RowNum ORDER BY AllData.LastUpdated) AS MainRowNumber
FROM (
--Current Data
SELECT
NULL LogID
,NULL LogCreateDate
,*
,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY LastUpdated DESC) AS RowNum
FROM TBL
WHERE (lastupdate<=@RelevanceDate)
UNION
--History Data
SELECT
*
,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY LastUpdated) AS RowNum
FROM TBL_LOG
WHERE lastupdate>@RelevanceDate
) AllData WHERE AllData.RowNum=1
) MainData
WHERE MainData.MainRowNumber = 1
关于sql - T-SQL通过RelevanceDate从表/log_table中检索历史数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9770921/
我是一名优秀的程序员,十分优秀!