2015-12-27 2 views
1

Я используюSQL Server объявить переменную

Insert into table 
    select (col_name) 
    from another 

Например:

insert into table1(salary) 
    select salary 
    from table2 

If (variable=700) 
Begin 
Insert ....... 
End 

Могу ли я объявить переменную и пусть значение его равно зарплату

В то время как выбрать номер строки 1, значение представляет собой зарплату в строке 1

при выборе номера строки 2 значение переменной s alary в строке номер 2

И так далее?

+0

Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. Непонятно, что вы пытаетесь выполнить. –

+0

Ваша проблема решена или нет, plz сообщите мне –

ответ

3

Из кода при условии, @variable является скаляром, но SELECT зарплата от table2 возвращает результирующий набор с одного столбца, поэтому прямое назначение не возможно, или он будет получать только последнюю (спасибо Ken за указание) значение от вашего SELECT.

Если я правильно понимаю, что вы пытаетесь сделать, я думаю, что вы хотите что-то вроде:

INSERT INTO ... 
SELECT 
    (CASE WHEN salary = 700 THEN ... 
    WHEN salary = ... THEN ...) 
    ELSE ... END) 

Или, может быть, это можно сделать еще лучше, если вы предоставите нам все, что вы пытаетесь сделать ,

+1

. Вы абсолютно верны в своем ответе выше, хотя в вашем заключении в первом предложении есть небольшая ошибка. Прямое присваивание скаляру в наборе результатов с несколькими строками присваивает скаляру значение LAST, а не первое значение. Следующий быстрый и грязный запрос проверяет это 'declare @object_id int; выберите @object_id = object_id из sys.objects order by object_id asc; выберите @ object_id'. Этот запрос вернет LAST object_id, а не первый. –

Смежные вопросы