Lead/Lag 関数を正しくインクリメント/デクリメントして正しい値を返すことができません。何をしても、現在の行が返されます。p.field3 値 = '223344' の場合、前の p.field2 値と後続の p.field2 値を表示する必要があります。
BEGIN TRY
SELECT p.field1,
p.field2,
LEAD( p.field2, 1, 'No Lead') OVER (ORDER BY p.field1) AS 'Lead',
LAG( p.field2, 1, 'No Lag' ) OVER (ORDER BY p.field1) AS 'Lag',
p.field3,
p.field4
FROM fieldTable p
WHERE p.field3 = '223344'
ORDER BY p.field1
END TRY
BEGIN CATCH
.....
END CATCH
Example Data in Database
1, 'Mr. Smith', '112233', 'Info1'
2, 'Mr. Jones', '223344', 'Info2'
3, 'Mr. Davis', '334455', 'Info3'
Data Being Returned for both Lag and Lead
2, 'Mr. Jones', 'Mr. Jones', 'Mr. Jones', '223344', 'Info2'
I need 'Mr. Smith' to be returned for Lag and 'Mr. Davis' returned for Lead