簡體   English   中英

將值從一個表插入到SQL Server上存儲過程中的另一個表中

[英]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行)
  • 您對column ='CD'不感興趣

如此(在發現需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM