[英]stored procedure INSERT INTO VALUES with one value selected from another table
[英]Insert values from one table into another table in a Stored Procedure on SQL Server
我的存儲過程中有一個臨時表。 看起來像這樣:
name NT AB
aaa NULL NULL
bbb NULL NULL
...
另一個表如下所示:
name column value
aaa NT 2.3
aaa NT 4.1
aaa AB 5.2
bbb CD 3.6
bbb NT 4.5
...
如何在存儲過程中將第二個表中的值放入第一個表的正確列中? (第二個表中的名稱和列不是唯一的。例如,可以有更多的aaa NT組合。在這種情況下,必須將這些值相加。)
NT,AB列的值來自另一個表。 在VB.Net中,我通過循環解決了這個問題。 我將所有數據存儲在一個數據表中,然后過濾為“ aaa”,“ bbb”,這樣我就可以獲得NT,AB值,而不必一直查詢數據庫。 (您可以假設name列是唯一的,實際上,還有更多的列一起是唯一的)
這假定:
name, column
在OtherTable中是唯一的(例如,對於某些名稱和列組合,永遠不會有2行) 如此(在發現需要SUM后編輯)
UPDATE
t
SET
NT = O1.TheSum,
AB = O2.TheSum
FROM
#temptable T
LEFT JOIN
(
SELECT SUM(value) AS TheSum, name
FROM OtherTable
WHERE column = 'NT'
GROUP BY name
) O1 ON T.name = O1.name
LEFT JOIN
(
SELECT SUM(value) AS TheSum, name
FROM OtherTable
WHERE column = 'AB'
GROUP BY name
) O2 ON T.name = O2.name
您可以通過簡單的查詢獲得結果:
SELECT name,
SUM(CASE WHEN column = 'NT' THEN value ELSE 0 END) as NT,
SUM(CASE WHEN column = 'AB' THEN value ELSE 0 END) as AB
FROM otherTable
GROUP BY name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.