2013-09-16 5 views
1

У меня есть хранимая процедура для загрузки данных из одной таблицы в другую таблицу.case case in select query in sql

Мне нужно установить значение столбца таблицы назначения на основе двух значений оператора select, что-то вроде приведенного ниже примера.

insert into table table_name 
(value1, value 2,value 3) 

select (value 1,value2 , 
case value3 

when value1 = 'somevalue' &&* value2 = 'somevalue' 

then 'x' 

else 'y' 
End 

from table_name. 

может ли один помочь мне, чтобы узнать, как обновить столбец в основе двух предыдущих значений столбца в одном запросе на выборку?

Я попытался с примером примера ниже, чтобы понять, но он не смог разобрать.

INSERT INTO HumanResources.departmentcopy 
(DepartmentID,GroupName,Name,temp) 

SELECT DepartmentID,GroupName,Name, 
CASE temp 
WHEN DepartmentID = 1 && Name = 'Engineering and Research' 
THEN 'sucessful' 
ELSE 'unsucessful' 
END 
FROM HumanResources.department 

Помогите мне в этом!

спасибо, Venkat

ответ

2

Вы были очень близки:

INSERT INTO HumanResources.departmentcopy(DepartmentID, GroupName, Name, temp) 
SELECT DepartmentID, 
     GroupName, 
     Name, 
     CASE WHEN DepartmentID = 1 AND Name = 'Engineering and Research' 
     THEN 'sucessful' ELSE 'unsucessful' END 
FROM HumanResources.department 
+0

Спасибо, что это сработало для меня. – user2700968

1

&& не действует в SQL. Используйте AND, чтобы добавить условие.

INSERT INTO HumanResources.departmentcopy(DepartmentID,GroupName,Name,temp) 
    SELECT DepartmentID, 
      GroupName, 
      Name, 
      CASE 
       WHEN DepartmentID = 1 AND Name = 'Engineering and Research' THEN 'sucessful' 
       ELSE 'unsucessful' 
       END 
      FROM HumanResources.department 
+1

Это еще не так, вам нужно использовать 'СЛУЧАЙ WHEN', а не' СЛУЧАЙ темп WHEN' – Lamak

+0

@Lamak Спасибо. Я нечаянно оставил это после форматирования. Ред. – Khan

+0

@lamak: 'CASE temp WHEN' возможно, но тогда вам нужно удалить имя столбца из частей' when': http://sqlfiddle.com/#!6/a651f/1 –

0
INSERT INTO HumanResources.department(DepartmentID, GroupName, Name, temp) 

SELECT DepartmentID, 
     GroupName, 
     Name, 

CASE WHEN DepartmentID = 1 AND Name = 'Engineering and Research' 

THEN 'sucessful' ELSE 'unsucessful' END 

FROM HumanResources.department