比较 2 个表中的值并生成具有差异的新表
Posted
技术标签:
【中文标题】比较 2 个表中的值并生成具有差异的新表【英文标题】:Compare values from 2 tables and produce a new table with the differences 【发布时间】:2017-09-07 20:56:51 【问题描述】:我正在尝试在 SQL Server(脚本)中找到一种方法:
-
给定 2 个表,具有相同的列结构
由共享相同键的行填充
但其中一列中的值不同 (INTEGER)
在两个表中查找具有匹配键的行并比较它们以生成新行。在不同的表中,其余列中的匹配值完全相同,而唯一不匹配的列之间的值不同。
例如。这是 4 个版本中的相同数据库,每次新迭代都会累积以前版本的值,我想要实现的是一个不同的新数据库(比如在 db1 中售出的苹果数量为 5,而在 db2 中的数量售出的苹果数为 20,我需要在新表中添加一个值为 15 的新行。
【问题讨论】:
添加一些示例表数据和预期结果表 - 全部为格式化文本(不是图像)。同时向我们展示您当前的查询尝试。 对我来说,这听起来像是外键上的简单连接并在整数字段上进行计算。 到目前为止您尝试过什么?请尝试做点什么。 【参考方案1】:CREATE TABLE foo (
theKey int NOT NULL IDENTITY(1,1) PRIMARY KEY,
someInt int
)
CREATE TABLE bar (
theKey int NOT NULL IDENTITY(1,1) PRIMARY KEY,
otherInt int
)
CREATE TABLE output (
theKey int NOT NULL PRIMARY KEY,
someInt int,
otherInt int,
valueDifference int
)
INSERT INTO output ( theKey, someInt, otherInt, valueDifference )
SELECT
foo.theKey,
foo.someInt,
bar.otherInt,
foo.someInt - bar.otherInt AS valueDifference
FROM
foo
INNER JOIN bar ON foo.theKey = bar.theKey
【讨论】:
以上是关于比较 2 个表中的值并生成具有差异的新表的主要内容,如果未能解决你的问题,请参考以下文章
如何比较两个表的列并将值插入到基于 SQL Server 中存储过程中的比较的新表中