Я пытаюсь обновить запрос в Microsoft Access с помощью SQL. Я получаю следующую ошибку при запуске «Синтаксическая ошибка (отсутствующий оператор) в выражении запроса» Я добавил следующий код в нижней части моего основного сценария SELECT/FROM Query.Обновление запроса с SQL в Access 2013
UPDATE [HRBI Query]
SET [HRBI Query].[PaySegmentMultiplier] = (CASE WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'Above top segment' THEN 0 ELSE CASE
WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'Below segment 1' THEN 1.35 ELSE CASE
WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S1' THEN 1.25 ELSE CASE
WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S2' THEN 1.15 ELSE CASE
WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S3' THEN .90 ELSE CASE
WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S4' THEN .60 ELSE CASE
WHEN [PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S5' THEN .40 ELSE CASE
ELSE PaySegmentMultiplier
END
END
END
END
END
END)
FROM [HRBI Query];
Я новичок в SQL. Может ли кто-нибудь объяснить, почему я получаю эту ошибку и как ее исправить? Благодарю.
EDIT:
Я попытался с помощью переключателя, но я все еще получаю сообщение об ошибке на sytax. Есть идеи?
SELECT SWITCH([PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'Above top segment',[HRBI Query].PaySegmentMultiplier = 0,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'Below segment 1', [HRBI Query].PaySegmentMultiplier =1.35,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S1', [HRBI Query].PaySegmentMultiplier =1.25,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S2', [HRBI Query].PaySegmentMultiplier =1.15,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S3', [HRBI Query].PaySegmentMultiplier =.90,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S4', [HRBI Query].PaySegmentMultiplier =.60,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S5', [HRBI Query].PaySegmentMultiplier =.40, True,'Error')
FROM [HRBI Query];
EDIT: Я пробовал эту и еще синтаксическую ошибку?
SET [HRBI Query].[PaySegmentMultiplier] = Switch (
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'Above top segment', 0,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'Below segment 1', 1.35,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S1', 1.25,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S2', 1.15,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S3', .90,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S4', .60,
[PayGroupCountryDesc] = 'Country' AND BasePayRangeSegment = 'S5', .40, TRUE, PaySegmentMultiplier);
не думайте, что вам нужен еще случай ... измените их, чтобы просто «когда» .., но я думал, что доступ не поддерживает регистр в SQL ... возможно, switch' или 'iif'? http://stackoverflow.com/questions/14785586/what-is-the-correct-case-select-statement-in-access-2010 – xQbert
У вас есть [[запрос HRBI] .PaySegmentMultiplier = 0', где значение '0' будет принадлежать. См. Пример ниже. – Andre
Спасибо Andre451. Я попробовал Switch, но все еще получаю синтаксическую ошибку? Имеет ли значение, что я добавляю SET в нижней части основного кода запроса. (ВЫБЕРИТЕ ИЗ)? – Chris2015