SQL Server 2017:使用另一个表中的数据同时更新表中的 2 列不起作用



我使用Microsoft SQL Server 2017。我在使用另一个表的值更新表时遇到问题。

我使用以下设置:

表"Main"

<表类> ID Val1 Val2 tbody><<tr>42空空

使用子查询。计算子查询中的GROUP BY查询和到主表的连接

UPDATE m
SET    m.Val1 = v.Val1,
m.Val2 = v.Val2
FROM   Main m 
INNER JOIN 
(
SELECT MainID,
Val1 = MAX(CASE WHEN Type = '1' THEN Val END),
Val2 = MAX(CASE WHEN Type = '2' THEN Val END)
FROM   Val
GROUP BY MainID
) v ON m.ID = v.MainID;

一种优雅的方法是使用pivot:

update main
set val1=[1], val2 = [2] 
from Val
pivot (
max(val) for type in ([1],[2])  
) p
where main.ID=p.MainID

最新更新