Sql 合并两个表并添加其他列
我正在使用sql server。我有两张桌子(下面是简单的快照) 我想做的是计算wgt列中的差异,并将结果插入另一个表中,我们称之为merge\u tbl。我想做的另一件事是在merge_tbl中有一个bit列,如果公司存在于表hlds中,那么它是1 所以我希望结果如下所示Sql 合并两个表并添加其他列,sql,sql-server,Sql,Sql Server,我正在使用sql server。我有两张桌子(下面是简单的快照) 我想做的是计算wgt列中的差异,并将结果插入另一个表中,我们称之为merge\u tbl。我想做的另一件事是在merge_tbl中有一个bit列,如果公司存在于表hlds中,那么它是1 所以我希望结果如下所示 merge_tbl name country wgt inHld abc us -10 1 mno uk 50 1 xzy us 5 1 ppp
merge_tbl
name country wgt inHld
abc us -10 1
mno uk 50 1
xzy us 5 1
ppp fr -45 0
我该怎么做呢 我认为您需要一个
完全外部联接
来从两个表中获取记录。然后,您可以使用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
JOIN
操作的ON
子句取决于您的实际需求。我假设如果name
和country
字段相等,则hlds
、bench
表格中的记录将匹配
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