Синтаксическая ошибка T-Sql в обновлении из выбора - PullRequest
2 голосов
/ 04 февраля 2010

У меня есть хранимая процедура в T-Sql с этим кодом в конце:

UPDATE @Results
SET Percentage = CASE B.Total
WHEN 0 THEN 0
ELSE (CAST(Number AS FLOAT)/B.Total)
END
FROM @TotalAnswersPerQuestion AS B
WHERE @Results.QuestionNumber=B.QuestionNumber

Временная таблица @Results определена и правильно используется в этой процедуре сохранения непосредственно перед этими инструкциями, но в последней строке я получаю сообщение об ошибке:

Сообщение 137, уровень 15, состояние 2, отчет о процедуре, строка 111 Необходимо объявить скалярную переменную "@Results".

Это мои таблицы:

DECLARE @TotalAnswersPerQuestion Table
(QuestionNumber int,
Total int)

DECLARE @Results Table
(
    QuestionNumber int,
    QuestionTitle varchar(max),
    AnswerNumber int,
    AnswerLable varchar(max),
    ProfileGroupID int,
    [Name] varchar(255),
    Identifier varchar(20),
    Number int,
    Percentage float
)

Что не так?

Ответы [ 3 ]

4 голосов
/ 04 февраля 2010
UPDATE r
SET Percentage = 
    CASE B.Total
        WHEN 0 THEN 0
        ELSE (CAST(Number AS FLOAT)/B.Total)
    END
FROM @TotalAnswersPerQuestion AS B
INNER JOIN @Results r
ON r.QuestionNumber=B.QuestionNumber;

Мне стыдно за ОБНОВЛЕНИЕ ОТ! Пусть пламя начнется!

1 голос
/ 04 февраля 2010

Псевдоним таблицы:

UPDATE r
SET Percentage = CASE B.Total
WHEN 0 THEN 0
ELSE (CAST(Number AS FLOAT)/B.Total)
END
FROM   @Results r
JOIN   @TotalAnswersPerQuestion AS B
ON     r.QuestionNumber=B.QuestionNumber
0 голосов
/ 04 февраля 2010
UPDATE r
SET Percentage = CASE B.Total
WHEN 0 THEN 0
ELSE (CAST(Number AS FLOAT)/B.Total)
END
FROM @Results r
,@TotalAnswersPerQuestion AS B
WHERE r.QuestionNumber=B.QuestionNumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...