1

私は次のようなテーブルを持っています:

PERSON_REF、CODE_START_DATE、CODE

ここPKPERSON_REF

CODE_START_DATE2012年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は空白になる可能性があります

4

2 に答える 2

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月に行のwhere条件を追加しました

于 2012-08-29T10:27:32.873 に答える
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...
于 2012-08-29T10:32:59.683 に答える