2016-12-02 6 views
0

У меня есть две таблицыОбновление столбца в таблице базы данных на основе столбцов в другой таблице

T1 
|id|balance| 
|1| 1000 | 
|2| 2000 | 
|3| 3000 | 

T2 
|id|rate|months| 
|1|0.50| 10 | 
|2|0.25| 24 | 
|3|0.40| 16 | 

Я хочу обновить столбец баланса в таблице T1, как

T1.Balance = T1.Balance + T2.rate*T2.months*T1.Balance 

Как я могу это сделать на сервере MS SQL? Благодаря!

+0

это не имеет никакого смысла , как связаны таблицы? –

+0

@vkp Sry, забыли столбец id – sramalingam24

ответ

1

Я создал временную таблицу, чтобы воссоздать, так что вы можете просто использовать обновление ниже:

CREATE TABLE #T1 
(id INT NOT NULL, 
balance money NOT NULL) 

INSERT INTO #T1 
(id,balance) 
    VALUES 
(1, 1000), 
(2, 2000) , 
(3, 3000) 


CREATE TABLE #T2 
(id INT NOT NULL, 
rate MONEY NOT NULL, 
months INT NOT NULL) 

    INSERT #T2 
(id,rate,months) 
    VALUES 
    (1,.5,10), 
    (2,.25,24), 
    (3,.4,16) 

    --confirm data 
    SELECT * FROM #T1 
    SELECT * FROM #T2 

    --update balances 
    update t1 SET balance = T1.Balance + (T2.rate*T2.months*T1.Balance) 
    FROM #T1 AS t1 
    JOIN #T2 AS t2 
     ON t1.id = t2.id 
0

Этот запрос может помочь вам обновить все строки для определенного столбца с помощью одного запроса.

UPDATE T1 AS t1 SET t1.balance = t1.balance * (SELECT t2.rate * t2.months FROM T2 AS t2 WHERE t2.id = t1.id); 

Или вы также можете попробовать это один

UPDATE T1 AS t SET t.balance = (t1.balance * t2.rate * t2.months) FROM T1 AS t1 JOIN T2 AS t2 ON t1.id = t2.id; 
+0

Ошибка при работе с SQL Server 2012 – sramalingam24

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