Подзапрос вернул более одного значения. (проблема) - PullRequest
0 голосов
/ 18 июня 2020

переменная @teste имеет несколько решений, поэтому я не могу поместить их в одну переменную. я не уверен, как мне сделать этот подзапрос. Я хочу взять формулу и изменить только определенные имена (которые имеют разные значения RealTV). может кто-нибудь помочь мне, пожалуйста?

//table operacao_3//      //table Operacao_1

|nom |RealTV| PrevTV     |   coluna      |    TV
 joao  320     NUll       Dias_Uteia_mes       22   
 luis  100     NUll       Dias_Uteis_Trab      6  
 Joana 50      Null

declare @teste int
declare @div int
set @div = (select (select TV from operacao_1 where coluna = 'dias_uteis_mes')/(select TV from operacao_1 where coluna = 'dias_uteis_trab'))
set @teste =  @div * (select Realtv from operacao_3 where nome = 'joao' and nome = 'luis')
Update operacao_3 set PrevTV = @teste```


1 Ответ

1 голос
/ 18 июня 2020

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

DECLARE @mes INT,
        @trab INT

SELECT @mes = TV FROM Table2 WHERE Coluna = 'mes'
SELECT @trab = TV FROM Table2 WHERE Coluna = 'trab'

UPDATE
    Table1
SET
    PrevTV = (@mes / @trab) * RealTV
WHERE
    Name IN ('Joao', 'Luis')

По сути, это выглядит примерно так:

Из таблицы 1 получите все строки, в которых имена являются любыми из {имен}, затем для каждой возвращаемой строки установите значение PrevTV как результат этого вычисления для этой строки.

Это обновит каждый человек своим собственным расчетные значения, там они указаны в пункте WHERE UPDATE

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