我使用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