ОБНОВИТЬ одно значение, когда ВЫБРАТЬ много - PullRequest
0 голосов
/ 28 августа 2018

У меня менее простой SQL-запрос, чем те, которые я видел, задавая этот вопрос, поэтому я надеялся получить некоторую помощь по моему запросу.

Следующий запрос выбирает три конкретных значения, и мне нужно одно значение, которое не выбрано для обновления.

SET ANSI_NULLS, ANSI_WARNINGS, ARITHABORT ON;
SELECT * FROM (
  SELECT EXP.EmpID,
  -1 * EXP.TotalAmount AS Amount,
  EXP.Name
  FROM TBL EXP
  WHERE EXP.ID IN (1, 2, 3) --this is dynamically created
  AND EXP.Status = 'APPROVED'
) AS ResultTable

Из этого запроса мне нужно UPDATE значение EXP.Status в 'COMPLETE'.

Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Я понял, что мне не нужно объединять каждое утверждение в одно. Итак, я просто добавил оператор UPDATE после моего оператора SELECT.

SET ANSI_NULLS, ANSI_WARNINGS, ARITHABORT ON;
SELECT * FROM (
  SELECT EXP.EmpID,
  -1 * EXP.TotalAmount AS Amount,
  EXP.Name
  FROM TBL EXP
  WHERE EXP.ID IN (1, 2, 3) --this is dynamically created
  AND EXP.Status = 'APPROVED'
) AS ResultTable

UPDATE TBL
SET Status = 'COMPLETE'
WHERE ID IN (1, 2, 3) --same dynamically created variable as above SELECT statement
0 голосов
/ 28 августа 2018

Вы также можете попробовать что-то вроде:

UPDATE EXP
SET EXP.Status = 'COMPLETE'
FROM TBL EXP
OUTPUT INSERTED.EmpID,-1 * INSERTED.TotalAmount AS Amount, INSERTED.Name
WHERE EXP.ID IN (1, 2, 3) AND EXP.Status = 'APPROVED';
0 голосов
/ 28 августа 2018

Не могли бы вы просто использовать UPDATE?

UPDATE exp
    SET EXP.Status = 'COMPLETE'
    FROM TBL EXP
    WHERE EXP.ID IN (1, 2, 3) AND
          EXP.Status = 'APPROVED';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...