我有兩個表更新基於列的數據庫表中的列在另一個表
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服務器?謝謝!
我有兩個表更新基於列的數據庫表中的列在另一個表
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服務器?謝謝!
我創建臨時表重建,所以你可以使用下面的更新:
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
下面的查詢可以幫助你更新所有的行,使用單個查詢特定列。
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;
獲取SQL Server 2012上的錯誤 – sramalingam24
這樣做沒有任何意義。表格如何相關? –
@vkp Sry基因,忘了ID列 – sramalingam24