У меня есть запрос, где я хочу выбрать запись и запись, которая будет до и после нее на основе идентификатора. Для всех записей NULL для FirstName я хочу установить FirstName как предыдущую запись. У меня есть код, который успешно получает таблицу значений до и после, но как я могу обновить значение? Я пробовал код ниже, но у меня есть ошибка, подобная этомуУстановка значения столбца в значение предыдущих записей
Кто-нибудь знает, в чем проблема? Обратите внимание, что я использую SQL Server 2008, так что я не могу использовать LAG или LEAD
WITH CTE AS (
SELECT
rownum = ROW_NUMBER() OVER (ORDER BY p.BusinessEntityID),
p.FirstName
FROM Person.Person p
)
SELECT
prev.FirstName PreviousValue,
CTE.FirstName,
nex.FirstName NextValue
FROM CTE
LEFT JOIN CTE prev ON prev.rownum = CTE.rownum - 1
LEFT JOIN CTE nex ON nex.rownum = CTE.rownum + 1
IF(CTE.FirstName IS NULL)
BEGIN
UPDATE Person SET FirstName = prev.FirstName
END
Вы работаете с SQL Server 1012 или выше? Если да, проверьте новые функции LEAD и LAG. – Scoregraphic
Я использую SQL Server 2008, поэтому я не могу использовать LEAD или LAG – MattTheHack
@Scoregraphic 2008 указан в вопросе. –