我的存储过程中有临时表。它看起来像这样:
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值而无需一直查询数据库。 (您可以假设名称列是唯一的,实际上有更多列是唯一的列)
答案 0 :(得分:1)
这假定:
name, column
在OtherTable中是唯一的(例如,某些名称和列组合永远不会有2行)so(在发现需要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
答案 1 :(得分:0)
您可以通过简单的查询获得结果:
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