我有一张表格如下:
PERSON_REF,CODE_START_DATE,CODE
PK
为PERSON_REF
我想要一个查询,向我提供CODE_START_DATE
在2012年8月的记录以及最新CODE_START_DATE
的记录,在此之前,即此伪代码
SELECT PERSON_REF,
CODE_START_DATE, --S/B in August 2012
CODE,
CODE_START_DATE [PrevDate], --Latest CODE_START_DATE Prior to Column 2 in Query
CODE [PrevCode] --Code at Date of Column 4 in Query
如果第2列日期之前没有记录,第4列和第5列可能为空白
答案 0 :(得分:2)
由于您使用的是 SQL Server ,请尝试外部应用。这是查询
SELECT T1.*, T2.CODE_START_DATE PrevDate, T2.CODE PrevCode
FROM TableName T1
OUTER APPLY (
SELECT TOP 1 *
FROM TableName T2
WHERE T2.CODE_START_DATE < T1.CODE_START_DATE
ORDER BY T2.CODE_START_DATE DESC
) T2
WHERE T1.CODE_START_DATE BETWEEN '01/Aug/12' AND '01/Sep/12'
<强>更新强>
我在 2012年8月
中添加了行的条件答案 1 :(得分:0)
您可以使用以下查询:
SELECT A.PERSON_REF,
A.CODE_START_DATE,
A.CODE,
(Select Top 1 B.CODE_START_DATE From YourTable B Where B.CODE_START_DATE > A.CODE_START_DATE Order by CODE_START_DATE DESC)AS [PrevDate],
(Select Top 1 B.CODE From YourTable B Where B.CODE_START_DATE > A.CODE_START_DATE Order by CODE_START_DATE DESC) AS [PrevCode]
From YourTable A
Where ..Conditions...