[ad_1]
SQL データベースがあり、ユーザーから部門 ID を取得し、給与が平均以下の従業員の給与を更新する手順を作成する必要があります。
エラー:
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
私が試したこと:
CREATE PROCEDURE RAISE_SALARY( @P_DEPARTMENT_ID NUMERIC ) AS BEGIN UPDATE EMP_DETAILS SET SALARY = SALARY + SALARY * 0.25 WHERE SALARY < AVG(SALARY) AND DEPARTMENT_ID = @P_DEPARTMENT_ID; END
解決策 1
質問へのすべてのコメントも参照してください…
…そして、私は mssql 構文にあまり慣れていないので、注意してください。したがって、いくつかのセミコロンが間違っている可能性があります。
とにかく、これはあなたが必要とすることをするはずです:
CREATE PROCEDURE RAISE_SALARY(@P_DEPARTMENT_ID NUMERIC) AS BEGIN DECLARE @AVG_SALARY INT /* Determine the average salary for the specific department '@P_DEPARTMENT_ID' */ SELECT @AVG_SALARY = AVG(SALARY) FROM EMP_DETAILS WHERE DEPARTMENT_ID = @P_DEPARTMENT_ID /* Update the salaries for that department for salaries below the average */ UPDATE EMP_DETAILS SET SALARY = SALARY + SALARY * 0.25 WHERE SALARY < @AVG_SALARY AND DEPARTMENT_ID = @P_DEPARTMENT_ID END
お役に立てば幸いです。
[ad_2]
コメント