我正在使用sql-server。我有两张桌子(下面简单的快照)。
table hlds table bench
name country wgt name country wgt
abc us 30 abc us 40
mno uk 50 ppp fr 45
xyz us 20 xyz us 15
我想要做的是计算wgt列中的差异并将结果插入另一个表中,让我们称之为merge_tbl。我想做的另一件事是merge_tbl有一个位列,如果公司存在于表格中,它就是1。
所以我希望结果如下所示,
merge_tbl
name country wgt inHld
abc us -10 1
mno uk 50 1
xzy us 5 1
ppp fr -45 0
我该怎么做呢?
答案 0 :(得分:1)
我认为您需要FULL OUTER JOIN
才能从两个表中获取记录。然后,您可以使用INSERT INTO SELECT
语句来执行插入:
INSERT INTO merge_tbl
SELECT COALESCE(h.name, b.name) AS name,
COALESCE(h.country, b.country) AS country,
COALESCE(h.wgt, 0) - COALESCE(b.wgt, 0) AS wgt,
CASE WHEN h.name IS NOT NULL THEN 1
ELSE 0
END AS inHld
FROM hlds AS h
FULL OUTER JOIN bench AS b ON h.name = b.name AND h.country = b.country
ON
操作的JOIN
子句取决于您的实际要求。如果 hlds
和bench
字段相等,我假设name
,country
表中的记录匹配。