我无法让 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