【问题标题】:Compare values from 2 tables and produce a new table with the differences比较 2 个表中的值并生成具有差异的新表
【发布时间】:2017-09-07 20:56:51
【问题描述】:

我正在尝试在 SQL Server(脚本)中找到一种方法:

  1. 给定 2 个表,具有相同的列结构
  2. 由共享相同键的行填充
  3. 但其中一列中的值不同 (INTEGER)
  4. 在两个表中查找具有匹配键的行并比较它们以生成新行。在不同的表中,其余列中的匹配值完全相同,而唯一不匹配的列之间的值不同。

例如。这是 4 个版本中的相同数据库,每次新迭代都会累积以前版本的值,我想要实现的是一个不同的新数据库(比如在 db1 中售出的苹果数量为 5,而在 db2 中的数量售出的苹果数为 20,我需要在新表中添加一个值为 15 的新行。

【问题讨论】:

  • 添加一些示例表数据和预期结果表 - 全部为格式化文本(不是图像)。同时向我们展示您当前的查询尝试。
  • 对我来说,这听起来像是外键上的简单连接并在整数字段上进行计算。
  • 到目前为止您尝试过什么?请尝试做点什么。

标签: sql sql-server


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多