Заявление о слиянии SQL Server 2008 - PullRequest
0 голосов
/ 12 июля 2011

Я несколько раз пытался выполнить следующий оператор MERGE, но всегда получал одно и то же сообщение об ошибке:

Неверный синтаксис рядом с ключевым словом "AS".

Есть идеи, почему эта ошибка?

    CREATE TABLE StudentDetails
    (
        StudentID INTEGER PRIMARY KEY,
        StudentName VARCHAR(15)
    )
    GO

    INSERT INTO StudentDetails
    VALUES(1,'SMITH')
    INSERT INTO StudentDetails
    VALUES(2,'ALLEN')
    INSERT INTO StudentDetails
    VALUES(3,'JONES')
    INSERT INTO StudentDetails
    VALUES(4,'MARTIN')
    INSERT INTO StudentDetails
    VALUES(5,'JAMES')
    GO

    CREATE TABLE StudentTotalMarks
    (
        StudentID INTEGER REFERENCES StudentDetails,
        StudentMarks INTEGER
    )
    GO

    INSERT INTO StudentTotalMarks
    VALUES(1,230)
    INSERT INTO StudentTotalMarks
    VALUES(2,255)
    INSERT INTO StudentTotalMarks
    VALUES(3,200)
    GO

    MERGE StudentTotalMarks AS stm
    USING (SELECT StudentID,StudentName FROM StudentDetails) AS sd
    ON stm.StudentID = sd.StudentID
    WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE
    WHEN MATCHED THEN UPDATE SET stm.StudentMarks = stm.StudentMarks + 25
    WHEN NOT MATCHED THEN
    INSERT(StudentID,StudentMarks)
    VALUES(sd.StudentID,25);

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

Ваш код работает в точности так, как написано для меня.

Вы уверены, что используете SQL Server 2008?

1 голос
/ 12 июля 2011

Для использования слияния .

требуется SQL Server 2008.

Я изменил ваш код для использования табличных переменных вместо того, чтобы доказать, что он работает в SQL Server 2008.

Вы можете проверить это здесь: http://data.stackexchange.com/stackoverflow/q/105423/test-merge

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...